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のエラーログ出力について解説しました。

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

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

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

それでは、また。

LINEで送る
Pocket

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

つぶらや

つぶらや

独学PG&SE、東京在住30代女性。
誰でもプログラマーになれるがモットーで、わかりやすい記事を目指しています。