ホームページ  >  記事  >  バックエンド開発  >  PHP エラーをログに記録する方法

PHP エラーをログに記録する方法

coldplay.xixi
coldplay.xixiオリジナル
2020-08-14 15:39:103526ブラウズ

PHP エラー ログを記録する方法: 最初に 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。