PHP の error_log() 関数は、主にエラー ログを書き込むために使用されます。これを使用して、複数人による開発、または単体テストでのエラーを含まないより複雑な開発プロジェクトでプログラムを記録できます。データベースクエリステートメントの実行。
PHP error_log() 関数の概要を見てみましょう。マニュアルの説明を見てみましょう:
error_log
(PHP 3, PHP 4, PHP 5)
bool error_log ( string message [, int message_type [, string destination [, string extra_headers]]] )
エラー メッセージを Web サーバーのエラー ログ、TCP ポート、またはファイルに送信します。
PHP error_log() 関数のパラメーターを見てみましょう。最初のパラメーター message はメッセージの内容、2 番目のパラメーターの種類はメッセージの種類、3 番目のパラメーターはターゲット ファイル、4 番目のパラメーターはその他のヘッダー情報です。実際、4 番目のパラメータは通常は使用されません。主に最初の 3 つのパラメータに注目します。2 番目のパラメータは、0、1、2、3 の 4 つのタイプを含みます。0 がデフォルトのタイプです。 4 種類の関数:
0
メッセージの内容は、php.ini の error_log 設定オプションの内容に応じて、オペレーティング システム独自のログ メカニズムまたはファイルを使用して、PHP のシステム ログに送信されます。これはデフォルトのオプションです。
1
3
PHP error_log() 関数の簡単な使用法を説明するために、例を見てみましょう。データベース抽象クラスが PEAR::DB クラスを使用しているとします。次に、プログラムに実行エラーがあるかどうかを記録したいと思います。次に、error_log() を使用して SQL ステートメントの実行エラーまたは失敗を記録します。少なくとも PEAR::DB クラスには、実行結果オブジェクトにエラーがあるかどうかを取得する DB::isError() メソッドが用意されています。特定の SQL ステートメントの実行中にエラーが発生したかどうかを判断し、同時に、オブジェクトに誤った SQL ステートメントを記録する userinfo 属性があれば、次のような関数を構築できます。
<ol class="dp-xml"> <li class="alt"><span><span>function logError($object) </span></span></li> <li><span>{ </span></li> <li class="alt"><span>if(DB::isError($object)) </span></li> <li><span>{ </span></li> <li class="alt"> <span>error_log(date("[Y-m-d H:i:s]")<br>." -[".$_SERVER['REQUEST_URI'].<br>"] :".$object -</span><span class="tag">></span><span> userinfo."n", <br>3, "/tmp/php_sql_err.log"); </span> </li> <li><span>return true; </span></li> <li class="alt"><span>} </span></li> <li><span>return false; </span></li> <li class="alt"><span>} </span></li> </ol>
もちろん、SQL クエリを実行するプログラムでこの関数を使用する必要があります。たとえば、ニュース情報を抽出する関数を作成する場合:
<ol class="dp-xml"> <li class="alt"><span><span>function getNewsContent($news_id, $</span><span class="attribute">field</span><span>=</span><span class="attribute-value">""</span><span>) </span></span></li> <li><span>{ </span></li> <li class="alt"><span>global $db; </span></li> <li> <span>$</span><span class="attribute">result</span><span> = $db-</span><span class="tag">></span><span>getRow("SELECT <br>$field FROM news WHERE </span><span class="attribute">news_id</span><span> = </span><span class="attribute-value">'$news_id'</span><span>"); </span> </li> <li class="alt"><span>if (logError($result)) </span></li> <li><span>{ </span></li> <li class="alt"><span>return false; </span></li> <li><span>} </span></li> <li class="alt"><span>return $result; </span></li> <li><span>} </span></li> </ol>
SQL が間違っているかどうかを判断し、間違っている場合は false を返します。間違っている場合は、ログをチェックして、PHP error_log() 関数が期待どおりに実行されるかどうかを確認できます。
tail /tmp/php_sql_err.log を実行すると、次のような情報が表示されます:
[2006-01-12 11:44:34] -[/news_list.php?news_id=1] :SELECT FROM news WHERE news_id = '1' [nativecode=1064 ** SQL 構文にエラーがあります。'FROM news WHERE news_id = '1' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。 ]
これはおそらく、選択したときに、抽出する必要があるフィールド名を記述しなかったため、news_list.php ファイルを確認すると、getNewsContent() 関数が $field パラメーターを渡していないことがわかります。となり、SQL 実行エラーが発生します。したがって、error_log() 関数は、SQL が正しく記述されているかどうか、またはパラメーターが正しく渡されていないかどうかをチェックするのに役立ちます。これにより、開発の負担が大幅に軽減され、プログラムの単体テストが可能になります。
もちろん、PHP error_log() 関数を使用して、より多くのエラー ログを記録して、PHP 開発を容易にすることもできます。