PHP

【PHP】エラーログの出力方法【error_log】

こんにちは!ともです(@_tomo_engineer)!

この記事では、PHPでerror_logメソッドによるエラーログの出力方法について書きたいと思います。

php.iniの確認

エラーの出力先はphp.iniファイルの『error_log』の項目であり、デフォルトでは設定されていません。phpinfo関数を利用して、php.iniの内容を確認してみましょう。

僕の環境(CentOS6.9)では『etc/php.ini』にphpの設定ファイルがあり、iniファイルの場所はphpinfo()メソッドにより確認する事が出来ます。

<?php
     phpinfo();
?>

php.iniの設定のerror_logの項目を見ると、error_logがデフォルトでno valueであり、設定ファイルが/etc/php.iniである事が分かります。

今回は『/var/www/html/debug.log』に出力したいので、

<?php
     set_ini('error_log', '/var/www/html/debug.log');
?>

このメソッドにより、php.iniの設定をプログラム上で行う事が出来ますし、設定ファイルを直接変えても良いです。error_logの出力先のデフォルト値を設定できます。

error_ logファイルの作成

今回はerror_logの出力先は『/var/www/html/debug.log』ですので、このディレクトリにdebug.logファイルを作成します。

その後

chmod 777 /var/www/html/debug.log

によりファイルを書き込み可能な状態に設定します。これを設定しないとログファイルに書き込む事が出来ません。

『debug.log』が書き込み可能になっている事が分かります。

error_logメソッド

error_logメソッドによりエラーを出力する事ができます。

今回の場合、debug.logファイルに追加で書き込みを行いたいです。その場合は次のようにerror_logメソッドを実行します。

<?php
     error_log("[". date('Y-m-d H:i:s') . "]". "保存に失敗しました。\n", 3, "/var/www/html/debug.log");
?>
  • 第一引数:エラー内容
  • 第二引数:ログタイプ
  • 第三引数:エラーログの書き出し先

引数については上のようになっており、今回の場合は追加で書き込みたいのでログタイプは『3』に設定しました。

まとめ

今回はerror_logの出力方法について書きました。

保守の観点から問題箇所を調べるためにログの出力は必須ですので、しっかりとエラーログを出力するできるようにマスターしましょう。