ホーム > タグ > PHP

PHP

[php] PHP Notice: Undefined … 表示されちゃってる方は。 [error_log]

Pocket

php Notice: Undefined …
phpでプログラムを書いていると、「php Notice: Undefined index」というメッセージが結構出てるのが気に障る。w

原因は、メッセージそのままなんだけど、配列などで未定義の要素を参照すると吐き出されるメッセージ。

なので、ちゃんとケアしてあげるかどうかは、自分で判断してください。

あと、最近、配列も結構使っちゃってるので、次もちょっとしたメモになります。

原因というか根本的な原因は自分のphp設定です。
つまり、php.iniを見ればいいということです。

php.iniを見て、

register_argc_argv = Off
となっていたら
register_argc_argv = On
する。

それだけ。

この意味は、php コア php.ini ディレクティブに関する説明 – Manualを見てください。

register_argc_argvの設定は、デフォルトはOnになってますが、自分の場合、Offになっていました。

register_argc_argv boolean
PHPが変数argvとargcを宣言するかどうかを指定します (これらにはGETの情報が格納されます)。 コマンドライン も参照ください。このディレクティブはPHP 4.0.0で 追加されました。以前のバージョンでは常に”on”です。

とのこと。

From xxxYukihiroxxx

Pocket

[html] 刺激的な意見を求め、いざ出陣! [php]

Pocket

というわけで、某所に通っています。

簡単に説明すると、最終的にはショッピングカートを作っちゃいましょう。というテーマ。
今までphpなんて触ったことがない人もいるので、結構刺激的な意見(質問)をされます。

「このエラーの意味は何ですか?」とか、「このエラーってなんぞや?」というのもある。

今はぜんぜんLAMP環境での開発関係はやってないんですけど、同じようなエラーを見て「あー!」っていうのがほとんど。
けれど、「ん?なんだ!?」というエラーもちらほら。

コマンドラインではやってないのもちょっと対応が厳しいという感じです。
(GUIベースの優秀なソフトを使っているため)
もっと言うと、半角スペースが入っているかどうかもわからないため。w

で、今週一番気になったのが、これ。
Q.int(11)の11って桁数じゃないの?
Q.MySQLで、ハイフン付きのデータベース名を扱う場合は?

これは本当に参りました。
どう説明したらいいのかがわからない。というのがあって、わかりやすく説明するのも大変。
逆に混乱させてしまう可能性もアリ。

A.int(11)の11って桁数じゃないの?
とりあえず、桁数なんだよ。というと、実際に挿入できません。と来た場合、バイト(b)の説明をするわけで。
けれど、はっきりこうだから、こう!って言えないんで、難しい世界です。

A.MySQLで、ハイフン付きのデータベース名を扱う場合は?
あと、ハイフン付きのデータベース名も最初わからなかった。

// m-floというデータベース名でデータベースを作りますよ。コマンド。
mysql> create database m-flo;

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘-flo’ at line 1

となるわけだが、今までハイフンなんて使っていなかったので、全くこのエラーには遭遇していなかった。
けれど、ハイフン付きのデータベース名を付ける場合、

調べてみると、バッククォートでデータベース名を囲む必要があるんです。

こんな感じで。
mysql> create database `m-flo`;

あと、データベースを削除(drop)する場合も同様。

だから、私はこう言いました。
「アンダーバーの方がよくない?」

いや、ハイフンでもいいですよ。けど、そこをハイフンにする必要があるのか?とか、ハイフン入れたらバッククォート入れないといけないよとか。
アンダーバー入れればバッククォート必要ないよ。という状況なので、極力アンダーバー。いや、アンダーバーを使ってください。お願いします!って感じで、やってました。w

時間的な考えをすると、作業効率が落ちる。って言えるけど、”時間”よりも今は”基礎を覚える”だから、そういうことは言えないのです。

帰るときに一言言われました。
「月曜日はerrorばっかりで大変なことになってますから。」と。w

けれど、結構、いい刺激になるんですよね。焦っちゃうけど。w

From xxxYukihiroxxx

Pocket

[php] XMLの改行の仕方について [Tips]

Pocket

どうも、phpでXMLを吐き出すと、一行でまとめてしまうこまったちゃん。
けれど、これを入れるだけで、しっかりお仕事してくれます。

// 出力XMLを整形(改行,タブ)する
$dom->formatOutput = true;

この一行を入れれば、自動的に改行もされますし、タブも付けれますので見やすくなります。

美しくなった。w

From xxxYukihiroxxx

Pocket

[php] PHP Fatal error: Class ‘DomDocument’ not found…

Pocket

このエラー、調べてました。
DomDocumentぐらいあるだろ?と疑って自分のプログラムを疑ってましたが、肝心なパッケージがありませんでした。

パッケージ php-xml.i686 0:5.3.2-1.fc12 を更新に設定しました

#yum install php-xml

これでOkです。

今までXML吐き出して処理してたのは、会社のPCだったからか。と今となって気がつきました。
ちなみに、php-xmlにphp-domも組み込まれているそうです。

はぁ。。。

From xxxYukihiroxxx

Pocket

[php5.3] Function ereg() is deprecated 対応方法 [error]

Pocket

なんか、ここ最近、PHPネタですが、一時的なものなので、気にしないでください。w

では、さっそく。

fedora12にアップグレードしたことで、php5.1からphp5.3へアップデートされたわけで。

そしたら、以下のエラーがログに出るようになったので、この対応方法。

PHP Deprecated: Function ereg() is deprecated in *** on line ***

アップデート前から使っていたソースで、php5.2系ではエラーは出ていなかったのですが、気になったのでソースを見直しました。

とりあえず、指摘されている箇所を修正しました。

if(ereg(‘/’, $return))

if(preg_match(‘(/)’, $return))
に変更。

この意味は、
Fix `ereg is deprecated` errors in PHP 5.3 « Devthought
ここに丁寧に書いてあります。英語です。
プログラム言語は全世界共通です。

英語苦手~!疲れる~!ではなく、プログラムを見ればわかると思います。

正規表現もここで復習してもいいかもしれません。

とりあえずの対策としてエラーメッセージを消す。という方法もありますが、一時的なことなので、気がついたときに処置しないとあとあと痛い目にあうのでしっかりケアしてあげましょう。w

ちりもつもればやまとなる。

From xxxYukihiroxxx

P.S
Firefoxですけど、wordpressにログインして、右上の新規投稿ボタンをクリックしたらブラウザごと落ちました。2度も。
だから今は、Opera10.10使用して書いてます。
エラーログも出てないので、ちょっと気持ち悪いです。。。

Pocket

Home > Tags > PHP

Search
Feeds

Return to page top