PHP開発では、バグレポートは、開発者がコードの問題をすばやく見つけて解決するのに役立つ重要な機能です。 PHPは、エラーレポートのレベルを制御するさまざまな方法を提供します。その1つは、 ini_set()関数を使用することです。この記事では、INI_SET()関数を介してPHPのエラーレポートレベルを変更し、いくつかの一般的なアプリケーションシナリオを提供する方法を紹介します。
INI_SET()は、実行時にPHP構成オプションを変更するために使用されるPHPの組み込み関数です。この関数を通じて、開発者は、エラーレポートレベル、タイムゾーン、ファイルアップロードサイズなどを含むPHP構成ファイル(PHP.ini)で指定された設定を変更できます。その基本的な構文は次のとおりです。
<span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$option</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$value</span></span><span>): </span><span><span class="hljs-keyword">string</span></span><span>|</span><span><span class="hljs-literal">false</span></span><span>
</span></span>
$オプション:変更する必要がある構成オプションの名前。
$値:新しい構成値。
この記事では、 ini_set()を使用してPHPエラーレポートのレベルを制御する方法に焦点を当てます。
PHPのエラーレポートメカニズムは、2つの主要な構成項目を使用します: error_reportingとdisplay_errors 。 ERROR_REPORTING PHPによって表示されるエラーのタイプを制御し、 Display_ErrorsはエラーがWebページに表示されるかどうかを制御します。
ERROR_REPORTING()関数は、PHPエラーレポートの冗長レベルを設定するために使用されます。 INI_SET()関数では、 ERROR_REPORTINGオプションを設定することにより、報告されたエラーレベルを指定できます。
たとえば、すべてのエラーのみを報告するだけでなく、警告と通知を報告するだけではありません。
<span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'error_reporting'</span></span><span>, E_ERROR | E_WARNING);
</span></span>
上記のコードでは、 E_ERRORは致命的なエラーを示し、 E_WARNINGはランタイム警告を示します。これにより、PHPレポートは致命的なエラーと警告のみになります。
さらに、 display_errors構成アイテムは、ブラウザにエラーを直接表示するかどうかを決定します。一般に、開発環境では詳細なエラー情報を確認したいと考えていますが、生産環境では、セキュリティを改善するために表示エラーを無効にする必要があります。
<span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'display_errors'</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>); </span><span><span class="hljs-comment">// 開発環境にエラーが表示されます</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'display_errors'</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>); </span><span><span class="hljs-comment">// 生産環境にはエラーは表示されません</span></span><span>
</span></span>
一般に、開発中にdisplay_errorsを1に設定し、生産中に0を設定して、機密情報が漏れなくなるのを防ぐことをお勧めします。
ini_set()関数を使用してエラーレポートレベルを構成する方法を示す完全なサンプルコードを次に示します。
<span><span><span class="hljs-comment">// エラー報告レベルを設定します:すべてのタイプのエラーを報告します</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'error_reporting'</span></span><span>, E_ALL);
</span><span><span class="hljs-comment">// 在開発環境にエラーが表示されます</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'display_errors'</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>);
</span><span><span class="hljs-comment">// 生産環境のディスプレイエラーを無効にします</span></span><span>
</span><span><span class="hljs-comment">// ini_set('display_errors', 0);</span></span><span>
</span></span>
PHPでは、 error_reporting()は一連の定数を受け入れ、それぞれが異なるタイプのエラーを表します。一般的なエラーレベルは次のとおりです。
E_ERROR :致命的なランタイムエラー。
E_WARNING :ランタイム警告(致命的ではないエラー)。
e_notice :ランタイム通知(通常、スクリプトの可能性のある問題)。
e_all :すべてのエラーと警告。
E_Strict :PHPコードのベストプラクティスに対する警告(たとえば、機能を非難するための警告)。
これらの定数を組み合わせて、報告するエラーの種類を選択できます。たとえば、 e_error | e_warning | E_Parseは、すべての致命的なエラー、警告、および解析エラーを報告します。
開発環境:開発段階では、通常、問題を見つけるのに役立つ詳細なエラー情報が必要です。したがって、 error_reportingをe_allに設定し、 display_errorsを有効にしてエラーメッセージを表示できます。
<span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'error_reporting'</span></span><span>, E_ALL);
</span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'display_errors'</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>);
</span></span>
生産環境:機密情報の漏れを回避するために、エラーディスプレイは生産環境で無効にする必要があり、エラーログのみを記録する必要があります。これは、次の設定で達成できます。
<span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'error_reporting'</span></span><span>, E_ALL);
</span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'display_errors'</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'log_errors'</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>); </span><span><span class="hljs-comment">// ロギングをオンにします</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'error_log'</span></span><span>, </span><span><span class="hljs-string">'/path/to/php-error.log'</span></span><span>); </span><span><span class="hljs-comment">// エラーログファイルパスを設定します</span></span><span>
</span></span>
ini_set()は、実行時にPHP構成を動的に調整できる強力な関数です。 ERROR_REPORTINGとDISPLAY_ERRORSの構成を調整することにより、PHPのレポートとエラーの表示方法を制御できます。開発環境では、詳細なエラー情報を確認する必要がありますが、実稼働環境では、エラー情報がエンドユーザーに漏れないようにする必要があります。したがって、 INI_SET()を使用してPHPのエラーレポートレベルを変更することは、PHPアプリケーションを開発および展開する際の基本的なスキルです。