開発プロセス中、デバッグ情報は問題調査に不可欠です。通常、エコー、 var_dump 、 print_rなどを使用して、デバッグ情報を印刷します。ただし、コードのエラーが発生した場合、スクリプトの実行を中断しながら、関連するデバッグ情報を印刷する必要がある場合があります。この時点で、出口関数は非常に重要なツールになり、スクリプトの継続的な実行を中止できます。それで、 Exitを使用してデバッグ情報を印刷する方法は?スクリプトが中断されたときに、まだログを表示できますか?この記事では、詳細な回答をご覧ください。
PHPでは、 exit()関数を使用して、現在のスクリプトの実行を終了します。文字列をパラメーターとして受け入れるか、スクリプトが終了したときに文字列情報を出力するか、出口ステータスコードを返します。
<span><span><span class="hljs-keyword">exit</span></span><span>(</span><span><span class="hljs-string">"Script terminated with this message"</span></span><span>);
</span></span>
または、1つの出口ステータスコード(通常は整数)を渡すだけです。
<span><span><span class="hljs-keyword">exit</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>); </span><span><span class="hljs-comment">// 正常に終了します</span></span><span>
</span><span><span class="hljs-keyword">exit</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>); </span><span><span class="hljs-comment">// 予想外にやめる</span></span><span>
</span></span>
exit()は、スクリプトの実行を中止するだけでなく、外部システムまたは他のスクリプトによる参照用の出口コードを返すためにも使用できます。
デバッグ中は、スクリプトの特定の場所で実行を停止し、デバッグ情報を出力する必要がある場合があります。現時点では、出口でデバッグ情報を渡して、問題の迅速な位置決めを容易にすることができます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// いくつかのコードをシミュレートします</span></span><span>
</span><span><span class="hljs-variable">$variable</span></span><span> = </span><span><span class="hljs-string">"Test value"</span></span><span>;
</span><span><span class="hljs-comment">// ここでデバッグ情報を印刷し、スクリプトを中止します</span></span><span>
</span><span><span class="hljs-keyword">exit</span></span><span>(</span><span><span class="hljs-string">"Debug Info: Variable value is <span class="hljs-subst">{$variable}</span></span></span><span>");
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
上記のコードでは、 exit()に実行すると、PHPは「デバッグ情報:変数値はテスト値」を出力し、スクリプトの実行を終了します。これにより、コードが特定の場所に実行されたときに有用な情報を出力でき、不要なコードを実行し続けないようにスクリプトが停止するようにします。
実際の開発では、デバッグ情報は、特に生産環境では、ブラウザに直接出力されることを意図していないことがよくあります。機密情報の漏れを避けるために、PHPのERROR_LOG関数を使用して、情報情報をログファイルにログに記録できます。このようにして、スクリプトが中断された場合でも、ログ内のデバッグ情報を表示できます。
ERROR_LOG()関数は、PHPのエラーログに情報を記述したり、ログファイルをカスタマイズしたりできます。これが例です:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$variable</span></span><span> = </span><span><span class="hljs-string">"Test value"</span></span><span>;
</span><span><span class="hljs-comment">// にデバッグ情報を書きます PHP エラーログ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-string">"Debug Info: Variable value is <span class="hljs-subst">{$variable}</span></span></span><span>", </span><span><span class="hljs-number">0</span></span><span>);
</span></span>
この例では、デバッグ情報はPHPのデフォルトエラーログに書き込まれます。ログの位置を決定するために、 php.ini構成でerror_logディレクティブを見つけることができます。
カスタムログファイルにデバッグ情報を書きたい場合は、ファイルパスを指定できます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$variable</span></span><span> = </span><span><span class="hljs-string">"Test value"</span></span><span>;
</span><span><span class="hljs-comment">// にデバッグ情報を書きます指定的日志文件</span></span><span>
</span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-string">"Debug Info: Variable value is <span class="hljs-subst">{$variable}</span></span></span><span>", </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">"/path/to/custom_log.log"</span></span><span>);
</span></span>
ここでは、ログ情報は、デフォルトのPHPエラーログの代わりに、 /path/to/ custom_log.logファイルに書き込まれます。
出口とロギングを組み合わせることができます。スクリプトを中止するときは、最初にログファイルにデバッグ情報を記録し、次にexit()を介してスクリプトの実行を中止します。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$variable</span></span><span> = </span><span><span class="hljs-string">"Test value"</span></span><span>;
</span><span><span class="hljs-comment">// デバッグ情報をログに書き込みます</span></span><span>
</span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-string">"Debug Info: Variable value is <span class="hljs-subst">{$variable}</span></span></span><span>", </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">"/path/to/custom_log.log"</span></span><span>);
</span><span><span class="hljs-comment">// スクリプトの実行を終了します</span></span><span>
</span><span><span class="hljs-keyword">exit</span></span><span>(</span><span><span class="hljs-string">"Script terminated, debug info logged."</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
このコードは、最初にデバッグ情報をログファイルに書き込み、次にexit()を介してスクリプトを終了し、プロンプトメッセージを表示します。
Exitとロギングを使用してデバッグするときに注意すべきいくつかの側面があります。
生産環境での注意:生産環境では、 exit()を使用してデバッグ情報を直接出力しないようにすることをお勧めします。これは、ページ全体の実行を中止し、内部状態を公開するためです。通常、ユーザーエクスペリエンスに影響を与えないように、ログファイルにデバッグ情報を記述することをお勧めします。
ログファイルの権限:PHPにログファイルを書き込む許可があることを確認します。許可がない場合、 ERROR_LOG()はログを記録できません。
デバッグ情報のクリーンアップ:開発段階では、デバッグ情報が問題をすばやく見つけるのに役立ちますが、オンラインに進む前に、これらのデバッグコードがクリアされていることを確認するか、少なくともデバッグ情報がユーザーにさらされていないことを確認してください。
ログファイル管理:ログファイルが大きすぎる場合、サーバーのパフォーマンスに影響を与える可能性があります。ログを定期的にクリーニングまたは回転させて、ディスクスペースを占めるログを避けることをお勧めします。
ExitとERROR_LOG関数を組み合わせることにより、PHP開発者は、スクリプトの実行を中断しながら、デバッグ情報をログファイルに柔軟に記録できます。これは、問題のトラブルシューティングに役立つだけでなく、生産環境で不必要な情報が公開されないことを保証します。ローカル開発環境であろうと生産環境であろうと、ロギングとデバッグ割り込みの合理的な使用は、開発効率とプログラムの安定性を改善するための効果的な手段です。