ホームページ >バックエンド開発 >PHPチュートリアル >PHP エラー処理 (開発および起動)
PHP 開発者の場合、製品が使用されたら、パス、データベース接続、データ テーブル、およびこれらのエラーによって公開されるその他の情報によるハッカーによる攻撃を避けるために、display_errors オプションをすぐにオフにする必要があります。しかし、どのような製品でも使用後は必ずエラーが発生します。開発者に役立つエラー レポートを記録するにはどうすればよいでしょうか?エラーレポートを別のテキストファイルに記録できます。エラー ログの記録は、開発者や管理者がシステムに問題があるかどうかを確認するのに役立ちます。プログラム内のエラー レポートをエラー ログに書き込む必要がある場合は、PHP 設定ファイルの設定ディレクティブ log_errors をオンにするだけです。エラー レポートは、デフォルトで Web サーバーのログ ファイル (たとえば、Apache サーバーのエラー ログ ファイル error.log) に記録されます。もちろん、エラー ログを指定したファイルに記録したり、システムの syslog に送信したりすることもできます。詳細は次のとおりです。
1. 指定したファイルを使用してエラー レポート ログを記録します
指定したファイルを使用します。エラーレポートログを記録する場合は、指定したファイルを使用してエラーレポートログを記録します。 指定したファイルを使用してエラーレポートログを記録する場合は、必ずこのファイルを保存してください。攻撃される可能性を減らすために、ドキュメントのルート ディレクトリの外に配置します。また、このファイルは、PHP スクリプトを実行するユーザー (Web サーバー プロセスの所有者) によって作成される必要があります。 Linux オペレーティング システムでは、/usr/local/ ディレクトリの error.log ファイルがエラー ログ ファイルとして使用され、Web サーバー プロセス ユーザーに書き込み権限が設定されているとします。次に、PHP 構成ファイルで、error_log ディレクティブの値をエラー ログ ファイルの絶対パスに設定します。
php.ini の設定手順を次のように変更する必要があります:
1. Error_reporting = E_ALL; ルールのすべてのエラー レポートを定義します
log_errors = On5. error_log = /usr/local/error。 log ;生成されたエラーレポートが書き込まれるログファイルの場所を指定します
PHP 設定ファイルを上記のように設定した後、Web サーバーを再起動します。このようにして、PHP スクリプト ファイルを実行するときに、生成されたすべてのエラー レポートはブラウザーには表示されませんが、指定したエラー ログ /usr/local/error.log に記録されます。さらに、error_reporting で定義されたルールを満たすすべてのエラーを記録できるだけでなく、PHP の error_log() 関数を使用してユーザー定義のエラー メッセージを送信することもできます。
この関数のプロトタイプは次のとおりです:
1. 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() 関数を使用してメッセージを電子メール アドレスに送信します。2 は送信します。このとき、3 番目のパラメータの destination は、宛先 IP とポートを表します。 3. ファイルの宛先に情報を保存します。
Oracle データベースへのログインの問題を例に挙げると、この関数の使用法は次のようになります:
1. error_log("Oracle データベースが利用できません!", 0);
4. }
5. if(!($foo=allocate_new_foo()){
6. error_log("迷惑です!", 1, ".mydomain.com"); // 管理者にメールボックスに送信
7. }
8. error_log("Screwed up!", 2, "localhost:5000"); // ポート 5000 に対応するローカル サーバーに送信します
9. , "localhost:5000"); わかりました!", 3, "/usr/local/errors.log"); //指定されたファイルに送信します
10. ?>
2. エラーエラー情報はオペレーティング システム ログに記録されます。 エラー情報はオペレーティング システム ログに記録されます。 Linux ではエラー ステートメントが syslog に送信されますが、Windows ではエラーがイベント ログに送信されます。ただし、オペレーティング システムが異なると管理方法が少し異なります。これは、システムおよびアプリケーションの実行に関連するメッセージを提供する UNIX ベースのログ ツールであることを理解してください。これらのログは、通常、イベント ビューアを介して表示できます。エラー レポートをオペレーティング システム ログに書き込みたい場合は、設定ファイルで error_log ディレクティブの値を syslog に設定します。 php.ini で変更する必要がある特定の設定ディレクティブは次のとおりです。
1. error_reporting = E_ALL ; 発生したすべてのエラーは PHP に報告されます2. max_len = 1024 ; 指定されたエラー レポートが生成されます。一般的なエラー出力に加えて、PHP ではカスタマイズされたメッセージをシステム SYSLOG に送信することもできます。カスタマイズされたメッセージは、前に紹介した error_log() 関数を通じて syslog に送信することもできますが、PHP には、この機能のために一緒に使用する必要がある 4 つの専用関数が用意されています。
それぞれの概要は次のとおりです:
define_syslog_variables()
この関数は、openlog()、syslog、および closelog() の 3 つの関数を使用する前に呼び出す必要があります。この関数が呼び出されると、現在のシステム環境に基づいて次の 3 つの関数に必要な定数が初期化されるためです。
openlog()
現在のシステムでロガーへの接続を開き、システムにログ メッセージを挿入する準備をします。また、指定された最初の文字列パラメーターを各ログ メッセージに挿入します。この関数では、ログ コンテキストで使用される 2 つのパラメーターも指定する必要があります。使用方法については、公式ドキュメントを参照してください。
syslog()
この関数は、カスタマイズされたメッセージをシステム ログに送信します。 2 つの必須パラメータが必要です。最初のパラメータは定数を指定してメッセージの優先度をカスタマイズします。たとえば、LOG_WARNING は一般的な警告を表し、LOG_EMERG はシステム クラッシュを示す可能性のある重大な問題を表し、重大度を示すその他の定数は公式ドキュメントに従って使用できます。 2 番目のパラメーターは、システム ログに送信されるカスタマイズされたメッセージです。実行時に PHP エンジンによって提供されるメッセージ文字列またはエラー文字列を指定する必要があります。
closelog()
この関数は、カスタマイズされたメッセージをシステム ログに送信した後に呼び出され、openlog() 関数によって開かれたログ接続を閉じます。
カスタマイズされたメッセージを syslog に送信する指示が構成ファイルで有効になっている場合、前に紹介した 4 つの機能を使用して警告メッセージをシステム ログに送信し、システムの syslog 解析ツールを使用して警告メッセージを表示および分析できます。 PHP プログラムによって生成されるメッセージ 送信されるカスタマイズされたメッセージは次のとおりです。
1. syslog への警告レポート デモが送信されました、警告時刻: ".date("Y/m/d H:i:s"));
5. closelog();
6. ?>
Windows システムを次のようにしますたとえば、[マイ コンピュータ] を右クリックして管理オプションを選択し、システム ツール メニューに移動してイベント ビューアを選択し、アプリケーション オプションを見つけると、カスタマイズされた警告メッセージが表示されます。上記のコードは、システムの syslog ファイルに次のようなメッセージを生成します。これはイベントの一部です:
1. PHP5[3084]、警告レポートを syslog に送信するデモ、警告時刻: 2009/03/26 04:09:11.
エラー ログの記録に指定したファイルを使用するか、syslog を使用するかは、Web サーバーの環境によって異なります。 Web サーバーを制御できる場合は、syslog 解析ツールを使用してログを表示および分析できるため、syslog の使用が理想的です。ただし、Web サイトが共有サーバー上の仮想ホストで実行されている場合、エラー ログの記録には別のテキスト ファイルしか使用できません。