PHPで開発していると、予期せぬエラーに遭遇することがあります。
こうしたエラーをいち早く把握して修正するために必要なのが「エラーログの出力」です。
PHPでは標準機能としてエラーのログ出力が可能で、適切に設定すると エラーの詳細をファイルに残せるようになります。
ここでは設定方法・コード実装・注意点まで、初心者でも迷わないように丁寧に解説します。
執筆者:kazu |
|
なぜエラーログが重要なのか?
エラーログは、開発中はもちろん 本番環境でもバグを検知するための重要な情報源です。
エラーが発生した行数、原因、発生日時などが記録されるため、後で振り返って修正する際の手がかりになります。
特に本番では、画面にエラーを直接表示せずにログに記録しておくのが安全な運用です。
基本はphp.iniで設定する
PHPでエラーのログ出力を行うには、まず php.ini に正しい設定が入っている必要があります。
設定すべき主なオプションは次の4つです。
error_reporting:出力するエラーの種類display_errors:画面に表示するかどうかlog_errors:ログに書き出すかどうかerror_log:ログを書き出すファイルのパス
例えば、次のように設定します。
error_reporting = E_ALL
display_errors = Off
log_errors = On
error_log = /path/to/php-error.log
この例では全てのエラーをログに記録し、画面には表示しないように設定しています。
本番環境では特に、ユーザーに詳細なエラーを見せないことが推奨されます。
エラーログの基本的な制御方法
どの種類のエラーをログに出すかは error_reporting で制御します。
全てのエラーを出す設定は以下の通りです。
error_reporting(E_ALL);
これにより、注意レベルから重大なエラーまで全て出力可能になります。
ただし、開発時だけでなく本番環境でも記録したい場合、必要なレベルだけを絞ることもできます。
ini_setで動的に設定する方法
php.iniを編集できない場合や、特定のスクリプトだけログを制御したい場合には、PHPコード内で設定を行うこともできます。
例えば、実行中にログ出力を有効化する場合は以下の通りです。
<?php
ini_set('display_errors', '0'); // 画面表示はしない
ini_set('log_errors', '1'); // エラーログを有効化
ini_set('error_log', '/path/to/php-error.log'); // 保存先
error_reporting(E_ALL); // 全てのエラーを対象
?>
このように書くことで、php.iniを書き換えられない環境でもログ出力が可能になります。
error_log関数で任意のメッセージを記録する
PHPには標準で error_log() という関数が用意されています。
これを使うと、自分でログ内容をカスタムして出力できます。
<?php
$message = "ユーザー登録でエラー発生";
error_log($message, 3, "/path/to/custom_error.log");
?>
ここで指定している3という値は「ファイルへの書き込み」を意味します。
第1引数はメッセージ、第3引数はログファイルのパスです。
このコードは、任意のエラーメッセージを指定したログファイルに追記する処理になります。
実践:例外を捕捉してログに残す
普通のエラーだけでなく、例外を捕捉した際にもログを出したいことがあります。
その際にはtry/catch構文と組み合わせます。
<?php
try {
// エラーを発生させたいコード
throw new Exception("例外テストエラー");
} catch (Exception $e) {
$log = "[" . date("Y-m-d H:i:s") . "] " . $e->getMessage();
error_log($log . "\n", 3, "/path/to/exceptions.log");
}
?>
このように書くと、例外発生時に日時・メッセージをまとめてログに残すことができます。
ログ出力がうまくいかない時のチェックポイント
もし設定やコードを書いたのにログが出力されない場合、次の点を確認してください。
- ログファイルのパスが正しいか
- 書き込み権限があるか(Linuxなど)
- Webサーバを再起動して設定が反映されているか
例えばLinuxのサーバであれば、ログファイルが存在しない場合は作成し、適切な所有者/パーミッションを与える必要があります。
まとめ:エラーログ運用のベストプラクティス
PHPのエラーログは、開発・保守の両面で不可欠なツールです。
以下のポイントを押さえると、ログ運用の精度がぐっと上がります。
- 本番ではdisplay_errorsはOffにする
- log_errorsを有効にして必ずログを記録する
- error_logで任意ログのカスタマイズも活用する
- 定期的にログを確認し、不要なログはアーカイブ〜削除する
適切にログを出力し、確実にエラー情報をつかむことで、PHPアプリケーションの信頼性は飛躍的に向上します。



コメント