ホームページ  >  記事  >  バックエンド開発  >  開発モードと製品モードでの PHP エラー処理の詳細な説明

開発モードと製品モードでの PHP エラー処理の詳細な説明

藏色散人
藏色散人転載
2020-02-03 16:13:582544ブラウズ

コードを作成する際には細心の注意を払っていても、プログラム エラーは常に避けられません。

php プログラムを開発するとき、php エラーが発生したときに、デバッグを容易にするためにできるだけ早くエラーが表示されることを望んでいます。プログラムが開発され、正式な製品になるとき、予期しないエラー メッセージをユーザーに表示するのではなく、エラー ログに記録することを望んでいます。ユーザーはスクリプト パス、データベース情報、またはその他のエラー メッセージを公開するためにこれらを使用する可能性が高いためです。破壊的なハッキング操作を示します。

PHP エラー処理

PHP スクリプトの実行中にエラーが発生した場合、エラーの形式で処理されます。一部のエラーではスクリプトが終了して続行されます。エラーが報告された後に実行されますが、実行されない場合もありますので、詳細についてはマニュアルを参照してください。

php のエラー処理メソッドは次の構成オプションに基づいており、これらの構成はコード内で宣言するか、php.ini ファイル内で設定できます。これらの設定を頻繁に変更する必要がない場合は、php.ini ファイルに設定してコードをよりクリーンかつ簡潔にすることをお勧めします。

# 是否打印错误信息到浏览器/命令行界面
# 开发模式下建议开启,产品模式下强烈建议关闭
ini_set('display_errors', 'On');
# 是否记录错误信息到日志
# 开发模式和产品模式下都建议开启
ini_set('log_errors', 'On');
# 指定错误信息日志文件,若开启了 log_errors 选项,记得指定日志文件位置
# 要确保执行 php 脚本的系统用户拥有该文件的 write 权限,否则日志无法被写入
ini_set('error_log', '/usr/local/php/errors.log');
# 该选项用以设定错误报告的等级
# 等同于 error_reporting(E_ALL) 
# 无论开发模式还是产品模式下都建议开到E_ALL(报告所有的错误信息)
# 产品模式下也需要设置此选项,因为关闭了 display_errors 并开启了 log_errors
# 所以浏览器/命令行界面不会因此暴露报错信息
ini_set('error_reporting', E_ALL);

さらに、PHP は、コード内のエラー ログ ファイルにカスタマイズされたエラー情報を記録するための組み込み関数も開発者に提供します。

bool error_log ( string $message [, int $message_type = 0 [, string $destination [, string $extra_headers ]]] )

必須パラメータは message です。この関数を呼び出すと、 php.ini で定義された error_log ファイルにメッセージを書き込みます。

ユーザー定義のエラー処理

さらに、ユーザーは、関数

mixed set_error_handler ( callable $error_handler [, int $error_types = E_ALL | E_STRICT ] )

エラーを使用して、カスタマイズされた方法で実行されるスクリプトを処理できます。ユーザーが error_handler を登録し、error_types を指定したときに発生するエラーは、これらの error_types のエラーが発生した場合、PHP の標準エラー ハンドラー

がバイパスされます (つまり、エラー メッセージは出力されません。エラー メッセージは表示されません)。ログに記録されます)が、error_handler 内のハンドラーが実行されます。

この関数の詳しい使い方はマニュアル(https://www.php.net/manual/zh/function.set-error-handler.php)を参照してください。

推奨関連記事チュートリアル: php チュートリアル

以上が開発モードと製品モードでの PHP エラー処理の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。