php error_reporting()関数の使用例(エラーキャプチャ)

WBOY
リリース: 2016-07-25 09:04:16
オリジナル
1093 人が閲覧しました
  1. display_errors = Off
  2. error_reporting = E_ALL
コードをコピー

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

  1. display_errors = On
コードをコピー

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

  1. error_reporting = E_ALL & ~E_NOTICE
コードをコピー

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

2. サーバー上のエラーレポート

コンピューター上に複数のバージョンの PHP が存在する可能性があるため、Apache の動作によっては、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 ファイルを上書きします。

  1. php_flag display_errors on
  2. 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. // すべてのエラー報告をオフにする; すべてのエラーをオフにする

  2. error_reporting(0);

  3. // 単純な実行エラーを報告する。エラーの実行

  4. error_reporting(E_ERROR | E_WARNING | E_PARSE);

  5. // E_NOTICE のレポートも有効です (初期化されていない

  6. // 変数をレポートしたり、変数名のスペルミスを検出したりするため…);初期化されていない
  7. // 変数、または変数名のスペルミスを検出します…); 初期化された変数、または変数名のタイプミスを検出します
  8. error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

  9. // E_NOTICE を除くすべてのエラーを報告します

  10. // これは php .ini で設定されたデフォルト値です。E_NOTICE を除くすべてのエラーを報告します。これは php.ini のデフォルト設定でもあります
  11. error_reporting(E_ALL ^ E_NOTICE);

  12. // すべての PHP エラーを報告します (PHP 3 ではビット単位 63 が使用される場合があります);すべてのエラーを報告します

  13. error_reporting(E_ALL);

  14. // 上記と同じです

  15. ini_set; ('error_reporting', E_ALL);

コードをコピー


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート