Notice: Undefined index | PHP ERROR CODE

このエントリーをはてなブックマークに追加
はてなブックマーク - Notice: Undefined index | PHP ERROR CODE
Share on Facebook
Post to Google Buzz
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed
Notice: Undefined index | PHP ERROR CODEdesign.eibui.co.jp

Notice: Undefined index
配列などで未定義の要素を参照しようとすると出る場合がある。
(インストールされているサーバーの設定で出ない場合もある)
「Notice:」というのは注意喚起程度のメッセージで、動作自体に影響はない。
また、インストールされているレンタルサーバーなど、通常のphpの設定だとエラーとして出力しない。
自身でサーバーを用意した場合は、php.iniの設定を変更することで表示されなくすることはできる。
セキュリティとの兼ね合いが重要になる。

解決策は
1.php.iniを編集する
2.スクリプト側で抑制する

php.iniの編集
 php.ini のerror_reporting がDevelopment Valueの E_ALL | E_STRICT」になっているなら、

error_reporting = E_ALL | E_STRICT

error_reporting = E_ALL & ~E_NOTICE
のように書き換えると「Notice: Undefined index」が表示されなくなる。

全てのエラーコードを表示しない場合は、
「error_reporting = 0」
とする

php.iniを書き換えた場合はサーバーの再起動を忘れずに行う。

Default Value: E_ALL & ~E_NOTICE
Development Value: E_ALL | E_STRICT
Production Value: E_ALL & ~E_DEPRECATED

PHPスクリプト側で設定する場合は下記のように表記する

// 全てのエラー出力をオフにする
error_reporting(0);

// 単純な実行時エラーを表示する
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// E_NOTICE を表示させるのもおすすめ(初期化されていない
// 変数、変数名のスペルミスなど…)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// E_NOTICE 以外の全てのエラーを表示する
// これは php.ini で設定されているデフォルト値
error_reporting(E_ALL ^ E_NOTICE);

// 全ての PHP エラーを表示する (Changelog を参照ください)
error_reporting(E_ALL);

// 全ての PHP エラーを表示する
error_reporting(-1);

// error_reporting(E_ALL); と同じ
ini_set(‘error_reporting’, E_ALL);

 参考URL: http://jp.php.net/manual/ja/function.error-reporting.php

$_GET $_POST 等で Notice: Undefined index: が出るばあいは、@で抑制する方法もとれる。
ただし、これは@で抑制しているだけである。加工していないから出るわけではない。
$hoge=$_GET['hoge'];
等でNotice: Undefined index: が出る場合、
$hoge=@$_GET['hoge'];
でNotice: Undefined index: は表示されなくなる。

変数などの「Notice: Undefined index:」を消すには、

$hoge = null;
echo $hoge;
もしくは
$hoge = ”;
echo $hoge;
のように事前に定義する。

最終的な処理として開発環境では
「error_reporting = E_ALL | E_STRICT」
を設定し、入力に対してはnullを事前に設定して定義する。
実装サーバーは
「error_reporting = E_ALL & ~E_NOTICE」
を設定し、ある程度一般的な環境に合わせることで汎用性を増す。

issetを正しく理解する。null値とunsetの違い-PHP変数管理
phpでNotice Errorの Undefined index等が多発してうざい場合はこれで解決CommentsAdd Star

No related posts.

This entry was posted in PHP, サーバー. Bookmark the permalink.

Comments are closed.