error_log関数と指定したファイルにエラーログを表示する方法!


この記事で分かること

  • エラーログとは何か
  • error_log関数について
  • 指定したファイルにエラーログを出力する方法

※ご紹介する記事内容はMAMPでの開発環境になります

開発環境

  • PHP7.3.1
  • MAMP
  • Mac

エラーログとは

  • エラーが発生した時にエラーの内容がエラーログとして記録すること

エラーログの役割

  • 期待した通りに動作が動かないときに、エラーのログを見ることで、問題の状況や原因を推測することができる

error_log関数の書き方

index.php
bool error_log (string $message[, int $message_type = 0[, string $destination
     [, string $extra_headers ]]] )

パラメーター(引数)

第一引数:$message - 記録するエラーメッセージを指定します
第二引数:$message_type - メッセージのタイプを指定します
第三引数:$destination - メッセージの送信先を指定します
第四引数:$extra_headers - 追加のヘッダ(メッセージタイプが1の場合のみ)を指定します

メッセージタイプの種類(第二引数)

メッセージタイプ 詳細
0 php.iniファイルの「error_log =」で指定したファイルに出力する。
1 第3引数で指定したメールアドレスにメールが送信されます。
2 ※このオプションは使用不可
3 第3引数で指定したファイル名にエラーメッセージが追加されます。また、エラーメッセージの最後に改行が追加されません。
4 エラーメッセージをSAPIログ出力ハンドラに送信します。

error_log関数のコード例

index.php
 error_log("[".date('Y-m-d H:i:s')."]"."入力エラー", 0);

出力結果

php_error.log
[2019-04-26 06:41:05]入力エラー

解説

  • メッセージタイプが「0」の場合php.iniで指定したファイルに出力されます。
php.ini
error_log = /Applications/MAMP/logs/php_error.log

【補足】php.iniファイルの場所を確認する方法

  • MAMPでphp.iniファイルの場所を確認する方法について書きます。

1.MAMPを開いて、「Open WebStart page」をクリックする

2.「TOOLS」、「PHPINFO」をクリックする

3.phpinfoが表示され、php.iniファイルの場所が確認できます

指定したファイルにエラーログを出力する方法

/Applications/MAMP/htdocs/src/log/log.txtファイルにエラーログを出力する場合を想定します。

コード例

index.php
error_log("[".date('Y-m-d H:i:s')."]"."入力エラー" . "\n", 3, "/Applications/MAMP/htdocs/src/log/log.txt");

出力結果

log.txt
[2019-04-26 06:41:05]入力エラー

解説

  • メッセージタイプが「3」の場合、第3引数で指定したファイル名にエラーメッセージが追加されます。

  • 改行がされないので、改行コードを指定する必要があります。