ホームページ  >  記事  >  バックエンド開発  >  error_reporting の使用法を学ぶ

error_reporting の使用法を学ぶ

WBOY
WBOYオリジナル
2016-07-25 09:11:481124ブラウズ

PHP プログラミングでの error_reporting の使用頻度を十分に認識する必要があります。この記事では、参考までに error_reporting の使用法を紹介します。 パラメータレベルが指定されていない場合は、現在のエラーレベルが返されます。レベルに使用できる値は次のとおりです。 1E_エラー 2 E_警告 4E_パース 8 E_通知 16 E_CORE_ERROR 32 E_CORE_WARNING 64 E_COMPILE_ERROR 128 E_COMPILE_WARNING 256 E_USER_ERROR 512 E_USER_WARNING 1024 E_USER_NOTICE 2047 E_ALL 2048 E_STRICT E_NOTICE は、通常の状況が記録されないことを意味し、存在しない変数にアクセスしようとしたり、存在しないファイルを表示するために stat() 関数を呼び出したりするなど、プログラムにエラーが発生した場合にのみ使用されます。通常、E_WARNING が表示されますが、プログラムの実行は中断されません。これはデバッグに役立ちます。たとえば、問題のある正規表記を使用して ereg() を呼び出します。 通常は E_ERROR が表示され、プログラムの実行が中断されます。これは、このマスクを使用してメモリ構成やその他のエラーを追跡できないことを意味します。 E_PARSE 構文のエラーを解析します。 E_CORE_ERROR E_ERROR と似ていますが、PHP コアによって引き起こされるエラーは除外されます。 E_CORE_WARNING E_WARNING と似ていますが、PHP コア エラー警告は含まれません。

PHP エラーレポート

php.ini ファイルには多くの構成設定があります。 Linux への PHP および Apache 2 のインストールに関するドキュメントに示されているように、php.ini ファイルがすでにセットアップされ、適切なディレクトリに配置されている必要があります。 PHP アプリケーションをデバッグするときに注意すべき構成変数が 2 つあります。 2 つの変数とそのデフォルト値は次のとおりです。 display_errors = オフ error_reporting = E_ALL

これら 2 つの変数の現在のデフォルト値は、php.ini ファイル内で検索することで確認できます。 display_errors 変数の目的は明らかです。この変数は、エラーを表示するかどうかを PHP に指示します。デフォルト値はオフです。ただし、開発プロセスを容易にするために、この値をオンに設定します。 display_errors = オン

error_reporting 変数のデフォルト値は E_ALL です。この設定では、不適切なコーディング方法から無害なヒント、エラーに至るまで、あらゆるものが表示されます。 E_ALL は、ブラウザの出力を混乱させる小さな事柄 (初期化されていない変数など) についてのヒントも画面上に表示するため、開発目的には少し粒度が高すぎます。私が知りたいのはエラーと不適切なコーディング方法だけであり、無害なヒントは知りたいわけではありません。したがって、error_reporting のデフォルト値を次の値に置き換えてください。 error_reporting = E_ALL & ~E_NOTICE

Apache を再起動すれば準備完了です。次に、Apache で同じことを行う方法を学びます。

サーバー上のエラー報告は Apache の動作に依存しており、マシン上に複数の PHP バージョンが存在する可能性があるため、PHP でエラー報告を有効にしても機能しない可能性があります。 Apache は 1 つの php.ini ファイルしか参照できないため、Apache が使用している PHP バージョンを判断することが難しい場合があります。 Apache が自身の設定にどの php.ini ファイルを使用しているかわからないことは、セキュリティ上の問題です。ただし、正しいエラー レベルが設定されるように Apache で PHP 変数を構成する方法があります。

また、サーバー側でこれらの構成変数を設定して、php.ini ファイルをオーバーライドまたはプリエンプトして、より高いレベルのセキュリティを提供する方法を知っておくとよいでしょう。

Apache を設定するときは、/conf/httpd.conf の http.conf ファイルの基本設定をすでに行っている必要があります。

php.ini ファイルで既に行ったことを行うには、次の行を httpd.conf に追加し、php.ini ファイルを上書きします。 php_flag display_errors オン php_value error_reporting 2039 これにより、php.ini ファイルに既に設定されている display_errors のフラグと error_reporting の値がオーバーライドされます。値 2039 は E_ALL および ~E_NOTICE を表します。 E_ALL を使用する場合は、値を 2047 に設定します。繰り返しますが、Apache を再起動する必要があります。

次に、サーバーでのエラー報告をテストします。

error_reporting() 関数に関しては、一部のエラー メッセージをシールドできますが、PHP コアに起因するエラーはシールドできません。PHP コアに起因するエラーは、書き込み形式に従っていないため、PHP ファイルのコンパイルが失敗する直接の原因となるためです。コーディングルールに起因する PHP のエラーはブロックできません。

  1. * 現時点では、E_STRICT モードの警告を回避します
  2. * (これは関数定義の前に行う必要があります)
  3. */
  4. if (define('E_STRICT')) {
  5. $old_error_reporting = error_reporting(0);
  6. if ($old_error_reporting & E_STRICT) {
  7. error_reporting($old_error_reporting ^ E_STRICT);
  8. } else {
  9. error_reporting($old_error_reporting);
  10. }
  11. unset($old_error_reporting);
コードをコピー

一般的なものは次のとおりです。

    // すべてのエラー報告をオフにする
  1. error_reporting(0);
  2. // 単純な実行エラーを報告する
  3. error_reporting(E_ERROR | E_WARNING | E_PARSE); // E_NOTICE をレポートすることも有効です (初期化されていない変数をレポートする
  4. // または変数名のスペルミスを見つけるため…); いくつかの初期化されていない変数をレポートするか、変数名のスペルミスを見つけることが含まれます
  5. error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE) ;
  6. / / E_NOTICE 以外のすべてのエラーを報告します
  7. // これは php.ini で設定されたデフォルト値です; E_NOTICE
  8. error_reporting(E_ALL ^ E_NOTICE) を除くすべてのエラーを報告します;
  9. // すべての PHP エラーを報告します (ビットごとの 63 が使用される場合があります) PHP 3);すべてのエラーを報告する
  10. error_reporting(E_ALL);
  11. // error_reporting(E_ALL)と同じ; 上記と同じ
  12. ini_set('error_reporting', E_ALL);
  13. コードをコピーする
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。