PHPのエラーログ出力のお悩みを解決!簡単解説で最速理解

エラーログの出力は開発の上でとても大切です。

エラーを確認する事で動作しない原因等が判明するからです。

本日はエラーログの出力について以下の内容でお話していきます。

【基本】エラーログの出し方
【解説】エラーログが出力されない時
【解説】エラーログの出力先

基本から丁寧に解説していきますので、最後まで読んで頂けると幸いです。

目次

エラーログの出し方

まずはエラーログを画面に出す設定を行いましょう。

そのために設定するのは、【php.ini】です。

ローカルにPHPの環境を作成している場合、【php.ini】の場所は以下のような場所です。

// Windowsの場合
C:xamppphpphp.ini

// linux系OSの場合
/etc/php.ini

※環境によって異なる場合もあります。

それでは、エラーログを画面出力するための設定をしましょう。

エラーログの画面出力のOn/Off

出力するかを切り替えるには、php.iniのdisplay_errorsの設定を変更します。

エラーログを出力する時

display_errors=On

エラーログを出力しない時

display_errors=Off

php.iniを編集・保存後、Webサーバを再起動しましょう。

これで、ブラウザなどの画面にエラーが出力されるようになります。

ただし、開発が終了しサービス開始後はdisplay_errors=Onにはしない事をお勧めします。

なぜならば、何かエラーが発生した場合にユーザーにその内容が見えてしまうからです。

ユーザーに混乱を起こさないため、またセキュリティの観点からもdisplay_errors=Off設定にしましょう。

エラーログの出力レベルの設定

ログの出力レベルを変更するには、php.iniのerror_reportingの設定を変更します。

なぜこの設定をするのかと言いますと、全てをログに出力する必要がない場合も存在するからです。

情報が多すぎるとその中にある重大な問題を見逃してしまう事もあるでしょう。

以下のように記述をします。

error_reporting=E_ALL & ~E_DEPRECATED

【~】は否定の意味です。

よって、E_DEPRECATED以外の全エラーを出力するという意味です。

php.iniを編集・保存後、Webサーバを再起動しましょう。

これでエラーが出力されるようになりました。

エラーログファイルの出力先

続いて画面にではなく、エラーログファイルを出力させる方法です。

WebサーバはApacheを想定しています。

エラーログファイル

Webサーバのエラーログはhttpd.confで設定します。

ErrorLog "logs/php/error.log"

出力する場所を変更したい場合は、上記項目を修正・保存をしてWebサーバを再起動しましょう。

エラーログファイル出力レベル

出力するエラーのレベルをLogLevelで設定出来ます。

LogLevel warn

warnは、警告より高いレベルのエラーを出力します。

設定出来るレベルは以下の種類です。

レベル内容
emerg緊急状態、動作不可
alertすぐに対応する必要がある
crit致命的なエラーが発生している
errorエラーが発生している
warn警告レベル
notice少し重要な情報
info情報
debugデバッグ

開発中であれば、一番低いdebug設定でよいと思います。

しかし運用が始まってからあまり低レベルのエラーを出していると、大事な情報を見逃す可能性があります。

適切なエラーレベルを選択しましょう。

デフォルトエラーログ出力先

Windows環境でのApacheエラーログのデフォルト出力先は

logs/error.log

になっていました。

linux系OSでは、Apacheのデフォルト出力先は

/var/log/httpd/error_log

になっていました。

※環境やバージョンによって変わる事があります。

ファイルが存在しなかった場合には自動的に作成されます。

エラーログファイルが出力されない時

初めて設定を行う時は、うまくいかない事が多いものです。

再度、以下の点についてチェックしてみてください。

Webサーバの再起動

httpd.confやphp.iniの設定ファイルを編集・保存後はWebサーバの再起動が必要になります。

Windowsでxampp環境を使用している方は、Apacheの項目を【Stop】後に再度【Start】してください。

linux系OSの場合は以下のようなコマンドです。

service httpd restart

※バージョンや使っているOSの種類によってコマンドが違う場合があります。

エラーログファイルの存在と所有権

linux系OSの場合、書き込むファイルがない場合にログを作成できない事がありました。

その場合、以下のコマンドで対応します。

touch /var/log/httpd/error_log/php_error.log
chown apache:apache /var/log/httpd/error_log/php_error.log

touchコマンドで、エラーログファイルを作成します。

chownコマンドで、エラーログファイルの所有者を設定します。

まとめ

今回はPHPのエラーログ出力について解説しました。

エラーログは開発中、とても役に立つ存在です。

また、サービス開始された後も潜在的なバグや問題の発見に役に立ちます。

必ず設定をして使いこなせるようにしてくださいね。

それでは、また。

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次