PHP エラー ログを記録する方法: 最初に PHP 構成ファイルを設定し、次に指定されたファイルを使用してエラー レポート ログを記録し、最後にエラー情報がオペレーティング システム ログに記録されます。
PHP エラー ログを記録する方法:
1. 指定したファイルを使用してエラーを記録します。レポート ログ
指定したファイルを使用してエラー ログを記録する場合は、攻撃される可能性を減らすために、必ずこのファイルをドキュメント ルート ディレクトリの外に保存してください。
そして、このファイルは、PHP スクリプトを実行するユーザー (Web サーバー プロセスの所有者) によって作成される必要があります。 Linux オペレーティング システムでは、/usr/local/ ディレクトリの error.log ファイルがエラー ログ ファイルとして使用され、Web サーバー プロセス ユーザーに書き込み権限が設定されているとします。次に、PHP 構成ファイルで、error_log ディレクティブの値をエラー ログ ファイルの絶対パスに設定します。
関連学習の推奨事項: php プログラミング (ビデオ)
php.ini の構成手順を次のように変更する必要があります。
error_reporting = E_ALL ; 発生したすべてのエラーを PHP に報告します
display_errors = Off ; 前のディレクティブで定義されたルールを表示しませんすべてのエラー レポート
log_errors = On; ログ ステートメント記録の場所を決定します
log_errors_max_len = 1024; 各ログ エントリの最大長を設定します
error_log = /usr/local/error.log ;生成されたエラー レポートが書き込まれるログ ファイルの場所を指定します
PHP 設定ファイルを上記のように設定した後、Web サーバーを再起動します。このようにして、PHP スクリプト ファイルを実行するときに、生成されたすべてのエラー レポートはブラウザーには表示されませんが、指定したエラー ログ /usr/local/error.log に記録されます。さらに、error_reporting で定義されたルールを満たすすべてのエラーを記録できるだけでなく、PHP の error_log() 関数を使用してユーザー定義のエラー メッセージを送信することもできます。
この関数のプロトタイプは次のとおりです。
bool error_log ( string message [, int message_type [, string destination [, string extra_headers]] )
この関数は、Web サーバー、TCP サーバーのエラー ログ ファイル、または指定されたファイルにエラー情報を送信します。この関数は、成功した場合は TRUE を返し、失敗した場合は FALSE を返します。最初のパラメータ メッセージは必須であり、送信されるエラー メッセージです。このパラメータのみを使用した場合、メッセージは設定ファイル php.ini で設定された場所に送信されます。 2 番目のパラメータ message_type は整数値です: 0 はメッセージをオペレーティング システムのログに送信することを意味します。1 は PHP の Mail() 関数を使用してメッセージを電子メール アドレスに送信し、4 番目のパラメータ extra_headers も使用されます。2 TCP サーバーにエラー メッセージを送信することを意味します。このとき、3 番目のパラメーターの宛先は宛先 IP とポートを表します。3. 情報をファイルの宛先に保存します。
Oracle データベースへのログインの問題を例にとると、この関数の使用法は次のようになります:
<?php if(!Ora_Logon($username, $password)){ error_log("Oracle数据库不可用!", 0); //将错误消息写入到操作系统日志中 } if(!($foo=allocate_new_foo()){ error_log("出现大麻烦了!", 1, ". mydomain.com"); //发送到管理员邮箱中 } error_log("搞砸了!", 2, "localhost:5000"); //发送到本机对应5000端口的服务器中 error_log("搞砸了!", 3, "/usr/local/errors.log"); //发送到指定的文件中 ?>
2. エラー情報はオペレーティング システム ファイルに記録されます。システム ログ
エラー レポートはオペレーティング システム ログにも記録できますが、ログ管理はオペレーティング システムによって多少異なります。 Linux ではエラー ステートメントは syslog に送信され、Windows ではエラーはイベント ログに送信されます。 syslog に詳しくない場合でも、syslog がシステムおよびアプリケーションの実行に関連するメッセージをログに記録するための API を提供する UNIX ベースのログ ツールであることだけは知っておいてください。 Windows イベント ログは実際には UNIX の syslog と同じであり、これらのログは通常、イベント ビューアを介して表示できます。エラー レポートをオペレーティング システム ログに書き込む場合は、構成ファイルで error_log ディレクティブの値を syslog に設定できます。
php.ini で変更する必要がある具体的な構成手順は次のとおりです:
error_reporting = E_ALL ; 発生した各エラーは、次のように報告されます。 PHP
display_errors = Off ;前のコマンドで定義されたルールを満たすすべてのエラー レポートを表示しません
#log_errors = On ;エラー レポートの内容を決定しますログ ステートメント レコードの位置
log_errors_max_len = 1024; 各ログ エントリの最大長を設定します
error_log = syslog; 生成されるエラー レポートを指定しますオペレーティング システムのログに書き込まれます。
一般的なエラー出力に加えて、PHP では、カスタマイズされたメッセージをシステム syslog に送信することもできます。カスタマイズされたメッセージは、前に紹介した error_log() 関数を通じて syslog に送信することもできますが、PHP には、この機能のために一緒に使用する必要がある 4 つの専用関数が用意されています。
これらは次のように紹介されます:
define_syslog_variables()
3 つの関数 openlog()、syslog、および closelog を使用する前に、この関数を呼び出す必要があります。 () 関数。この関数が呼び出されると、現在のシステム環境に基づいて次の 3 つの関数に必要な定数が初期化されるためです。
openlog()
打开一个和当前系统中日志器的连接,为向系统插入日志消息做好准备。并将提供的第一个字符串参数插入到每个日志消息中,该函数还需要指定两个将在日志上下文使用的参数,可以参考官方文档使用。
syslog()
该 函数向系统日志中发送一个定制消息。需要两个必选参数,第一个参数通过指定一个常量定制消息的优先级。例如LOG_WARNING表示一般的警 告,LOG_EMERG表示严重地可以预示着系统崩溃的问题,一些其他的表示严重程度的常量可以参考官方文档使用。第二个参数则是向系统日志中发送的定制 消息,需要提供一个消息字符串,也可以是PHP引擎在运行时提供的错误字符串。
closelog()
该函数在向系统日志中发送完成定制消息以后调用,关闭由openlog()函数打开的日志连接。
如果在配置文件中,已经开启向syslog发送定制消息的指令,就可以使用前面介绍的四个函数发送一个警告消息到系统日志中,并通过系统中的syslog解析工具,查看和分析由PHP程序发送的定制消息,如下所示:
define_syslog_variables(); openlog("PHP5", LOG_PID , LOG_USER); syslog(LOG_WARNING, "警告报告向syslog中发送的演示, 警告时间:".date("Y/m/d H:i:s")); closelog(); ?>
相关学习推荐:编程视频
以上がPHP エラーをログに記録する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。