ホームページ  >  記事  >  バックエンド開発  >  PHPエラーチェックの詳細な紹介

PHPエラーチェックの詳細な紹介

黄舟
黄舟オリジナル
2017-10-10 10:13:592167ブラウズ

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                   ;将会向PHP报告发生的每个错误   
2. display_errors = Off                        ;不显示满足上条 指令所定义规则的所有错误报告   
3. log_errors = On                             ;决定日志语句记录的位置   
4. log_errors_max_len = 1024                   ;设置每个日志项的最大长度   
5. 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. <?php      
2.     if(!Ora_Logon($username, $password)){     
 3.         error_log("Oracle数据库不可用!", 0);        //将错误消息写入到操作系统日志中   
4.     }   
5.     if(!($foo=allocate_new_foo()){   
6.         error_log("出现*烦了!", 1, ". mydomain.com");   //发送到管理员邮箱中   
7.     }  
8.     error_log("搞砸了!",   2,   "localhost:5000");     //发送到本机对应5000端口的服务器中   
9.     error_log("搞砸了!",   3,   "/usr/local/errors.log");  //发送到指定的文件中   
10. ?>

2. エラー情報はオペレーティング システムのログに記録されます

情報はオペレーティング システムのログに記録されます。 エラー情報はオペレーティング システムのログに記録されます。エラー レポートはオペレーティング システムのログに記録されますが、ログ管理は両者で多少異なります。異なるオペレーティング システム。 Linux ではエラー ステートメントは syslog に送信され、Windows ではエラーはイベント ログに送信されます。 syslog に詳しくない場合でも、syslog がシステムおよびアプリケーションの実行に関連するメッセージを記録する API を提供する UNIX ベースのロギング ツールであることだけは知っておいてください。 Windows イベント ログは実際には UNIX syslog と同じであり、これらのログは通常、イベント ビューアを介して表示できます。エラー レポートをオペレーティング システム ログに書き込む場合は、構成ファイルで error_log ディレクティブの値を syslog に設定できます。

php.ini で変更する必要がある具体的な設定手順は次のとおりです:

1. error_reporting  =  E_ALL                   ;将会向PHP报告发生的每个错误   
2. display_errors = Off                            ;不显示 满足上条指令所定义规则的所有错误报告   
3. log_errors = On                             ;决定日志语句记录的位置   
4. log_errors_max_len = 1024                   ;设置每个日志项的最大长度   
5. error_log = syslog                          ;指定产生的错误报告写入操作系统的日志里

一般的なエラー出力に加えて、PHP ではカスタマイズされたメッセージをシステム syslog に送信することもできます。カスタマイズされたメッセージは、前に紹介した error_log() 関数を通じて syslog に送信することもできますが、PHP には、この機能のために一緒に使用する必要がある 4 つの専用関数が用意されています。

それぞれの概要は次のとおりです:

define_syslog_variables()

この関数は、openlog()、syslog、および closelog() の 3 つの関数を使用する前に呼び出す必要があります。この関数が呼び出されると、現在のシステム環境に基づいて次の 3 つの関数に必要な定数が初期化されるためです。

openlog()

現在のシステムでロガーへの接続を開き、システムにログ メッセージを挿入する準備をします。また、指定された最初の文字列パラメータを各ログ メッセージに挿入します。この関数では、ログ コンテキストで使用される 2 つのパラメータも指定する必要があります。使用方法については、公式ドキュメントを参照してください。

syslog()

该 函数向系统日志中发送一个定制消息。需要两个必选参数,第一个参数通过指定一个常量定制消息的优先级。例如LOG_WARNING表示一般的警 告,LOG_EMERG表示严重地可以预示着系统崩溃的问题,一些其他的表示严重程度的常量可以参考官方文档使用。第二个参数则是向系统日志中发送的定制 消息,需要提供一个消息字符串,也可以是PHP引擎在运行时提供的错误字符串。 

closelog()

该函数在向系统日志中发送完成定制消息以后调用,关闭由openlog()函数打开的日志连接。 

 

如果在配置文件中,已经开启向syslog发送定制消息的指令,就可以使用前面介绍的四个函数发送一个警告消息到系统日志中,并通过系统中的syslog解析工具,查看和分析由PHP程序发送的定制消息,如下所示: 

1.  
2.     define_syslog_variables();   
3.     openlog("PHP5", LOG_PID , LOG_USER);   
4.     syslog(LOG_WARNING, "警告报告向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的解析工具来查看和分析日志。但如果你的网站在共享服务器的虚拟主机中运行,就只有使用单独的文本文件记录错误日志了。

以上がPHPエラーチェックの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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