例:
Windows 環境: もともと php4.3.0 で正常に実行されていたプログラムが、4.3.1 で多くのエラーが報告されるのはなぜですか? 一般的なプロンプトは次のとおりです。 > たとえば、次のコードがあります:
コードをコピー コードは次のとおりです:
if (!$tmp_i) {
$tmp_i=10>}
4.3.0 では正常に実行されますが、4.3.1 で実行すると、次の質問が表示されます。
1. 問題はどこにありますか?
2. このコードはどのように変更する必要がありますか?
3. コードを変更せずに、4.3.0 の元のプログラムを 4.3.1 環境で正常に実行できるようにするにはどうすればよいですか?
解決策:
プログラムの先頭に次の文を追加します:
error_reporting(E_ALL & ~E_NOTICE) または error_reporting(E_ALL ^ E_NOTICE); php.ini を変更
error_reporting = E_ALL & ~E_NOTICE
error_reporting() 関数について:
error_reporting() は、PHP のエラー レベルを設定し、現在のレベルを返します。
; エラー報告はビット単位で行われます。または、数値を合計して、必要なエラー報告レベルを取得します。
; E_ALL - すべてのエラーと警告
; E_ERROR - 致命的な実行時エラー
; E_PARSE - コンパイル時解析エラー
;実行時リマインダー (これらは、コード内のバグ
によって引き起こされることがよくあります。または、意図的な動作によって引き起こされる場合もあります。 (例: 未初期化変数の
への自動初期化、空の文字列が
; E_CORE_ERROR - PHP の起動時に初期化プロセス中に発生する致命的なエラー
; E_CORE_WARNING - PHP の起動時に初期化プロセス中に発生する警告 (致命的ではない)エラー)
; E_COMPILE_ERROR - コンパイル時の致命的なエラー
; E_COMPILE_WARNING - コンパイル時の警告 (致命的ではないエラー)
; E_USER_ERROR - ユーザーが生成した警告メッセージ
; E_USER_NOTICE - ユーザーが生成したリマインダー メッセージ
使用法:
error_reporting(0);//エラー報告を無効にする
error_reporting(E_ALL ^ E_NOTICE); // すべて表示E_NOTICE
error_reporting(E_ALL^E_WARNING^E_NOTICE) を除くエラー情報;//E_WARNING を除くすべてのエラー情報を表示 E_NOTICE
error_reporting(E_ERROR E_WARNING E_PARSE);//実行時エラーを表示、error_reporting(E_ALL ^ ) と同じ効果E_NOTICE); error_reporting(E_ALL);//すべてのエラーを表示します。