PHPのエラー表示をHTMLで実装する方法を解説
PHPで発生したエラーをHTML上に表示させる設定は、開発中に問題を迅速に特定するために欠かせません。
この記事では、エラー報告の基本設定や、例えばdisplay_errors
オプションの利用法、実装時の注意点について解説します。
安全性にも配慮しながら、効率的なデバッグ環境の整備を進める方法を学びましょう。
php.iniを利用したエラー表示設定
display_errorsオプションの確認
設定値の検証方法
php.ini
ファイル内のdisplay_errors
オプションは、PHPのエラー表示を有効または無効にするための設定です。
設定値を確認する方法の一例として、phpinfo()
関数を利用する方法があります。
以下のサンプルコードでは、現在の設定値をブラウザに表示する例を示しています。
<?php
// php.iniの設定値を確認するためにphpinfo()を実行
phpinfo();
?>
// ブラウザ上の出力例(詳細な情報が多数表示されますが、
// "display_errors"に関する項目で設定値が確認できる)
また、コマンドラインで以下のコマンドを実行する方法もあります。
- Linux/macOSの場合:
ターミナルで php -i | grep display_errors
と入力すると、display_errors
の設定値が表示されます。
- Windowsの場合:
コマンドプロンプトで php -i | findstr display_errors
と入力してください。
PHPバージョン別の留意点
PHPのバージョンによっては、display_errors
のデフォルト設定が異なる場合があります。
例えば、PHP 7系以降では開発環境向けにはエラー表示が有効になっているケースが多く、本番環境向けの設定では無効になっている可能性があります。
また、設定が反映されるためには、Webサーバーの再起動が必要な場合もありますので注意してください。
error_reportingのレベル設定
全エラー表示の実現方法
全てのエラーを表示するには、error_reporting
に\(E_ALL\)
を設定する必要があります。
php.ini
に直接記述する方法もあれば、コード内で設定する方法もあります。
以下は、コード内で実行時にエラー表示レベルを設定するサンプルコードです。
<?php
// 全てのエラーを表示するために、error_reportingにE_ALLを設定
error_reporting(E_ALL);
// display_errorsがOffになっている場合に備えて、ini_setでオンにする
ini_set('display_errors', '1');
// 下記にエラーを発生させるサンプルコードを記述
echo $undefinedVariable; // 未定義変数のエラーを発生させる
?>
// ブラウザ上に未定義変数に関する警告メッセージが表示される
個別エラー設定の調整
エラー表示を行う上で、必要に応じて特定のエラー種別だけを表示させることも可能です。
例えば、E_NOTICE
やE_WARNING
の表示を除外して、重大なエラーだけを表示する場合には以下のように設定します。
<?php
// 警告(E_WARNING)や通知(E_NOTICE)を除外し、致命的なエラーのみ表示
error_reporting(E_ERROR | E_PARSE);
// 必要に応じて、display_errorsをオンにする
ini_set('display_errors', '1');
?>
// ブラウザ上では、致命的なエラーまたはパースエラーのみが表示される
コード内でのエラー表示制御
ini_set関数による設定変更
ソースコード内の設定例
PHPコード内で一時的にエラー表示の設定を変更する場合は、ini_set
関数を利用する方法が有効です。
例えば、特定の処理の前後でエラー表示をオンにしたりオフにしたりすることができます。
次のサンプルコードは、実行中にエラー表示を有効にし、終了時に設定を元に戻す例です。
<?php
// 現在のdisplay_errorsの設定値を一時保存
$prevDisplayErrors = ini_get('display_errors');
// エラー表示を有効にする
ini_set('display_errors', '1');
// エラーチェックが必要な処理を実行
echo $unknownVariable; // 未定義変数の警告が出力される可能性あり
// 以前の設定に戻す
ini_set('display_errors', $prevDisplayErrors);
?>
// サンプル実行時、最初のechoでエラーが表示された後、元の設定に復帰する
一時的な変更時の注意事項
一時的な変更は、アプリケーション全体に影響を及ぼさないように注意が必要です。
特に次の場合には配慮が必要です。
- エラー表示をオンにしたまま本番環境へ移行しないこと
- 設定を戻し忘れると、以降のコードに予期せぬ影響を与える恐れがあるので、必ず元に戻す
- グローバルな設定を変更する場合は、使用範囲を明確にする
error_reporting関数の利用
実行時制御の方法
実行時にエラーレベルを制御するために、error_reporting
関数も活用できます。
この関数を用いることで、指定した範囲のエラーのみを対象に動作させることが可能です。
例えば、開発中のコードでのみ特定のエラーを出力する場合、以下のように設定します。
<?php
// すべてのエラーを表示する設定
error_reporting(E_ALL);
// その後、特定の処理でのエラーレベルを一時的に変更
function processData() {
// エラー警告を抑制したい処理例
error_reporting(E_ERROR | E_PARSE);
// ここで発生する通知や警告は表示されない
echo $undefinedVar;
// 元のエラーレベルに戻す
error_reporting(E_ALL);
}
processData();
?>
// 関数内の処理では、未定義変数による警告は出力されず、関数外では全エラーが有効になる
開発環境での適用例
開発環境では、通常、全てのエラーを可視化するためにエラー表示を有効にすることが推奨されます。
以下のサンプルコードは、開発環境でのエラー表示設定の一例です。
<?php
// 開発環境向けのエラー表示設定
error_reporting(E_ALL);
ini_set('display_errors', '1');
// サンプル処理:意図的に未定義変数を利用してエラーを発生させる
echo $sampleError;
?>
// ブラウザ上に未定義変数に関する警告やエラーメッセージが詳細に表示される
HTML上のエラー出力確認
ブラウザ表示とデバッグツールの活用
ブラウザコンソールでの検証方法
HTML上に出力されたエラーメッセージは、直接ブラウザに表示されるだけでなく、ブラウザのデベロッパーツール(開発者ツール)を利用して詳細を確認できます。
ChromeやFirefoxなどのモダンブラウザでは、F12キーを押すか右クリックメニューから「検証」を選択することで、JavaScriptコンソールやネットワークタブでエラー情報を詳細に確認できます。
- エラーが発生した場合、コンソールにエラー内容およびスタックトレースが表示される
- HTMLの要素内にエラーメッセージが表示される場合は、DOMツリーで確認することが可能です
ログ情報との連携方法
エラー情報をブラウザ上で表示するだけではなく、サーバー側のログファイルと連携することで、より詳細なデバッグ情報を得ることができます。
PHPでは、error_log
関数を利用して、エラー情報を指定のファイルに書き出す設定が可能です。
例えば、以下のサンプルコードは、エラーをログファイルに記録しながら表示する方法を示しています。
<?php
// エラー情報をログファイルに出力する設定
ini_set('log_errors', '1');
ini_set('error_log', '/path/to/php-error.log');
// エラー表示も有効にする設定
error_reporting(E_ALL);
ini_set('display_errors', '1');
// サンプルエラー発生
echo $unassignedVariable;
?>
// ブラウザ上にエラー表示が出るとともに、
// 指定したログファイル(/path/to/php-error.log)にエラー情報が追記される
公開環境との設定切替
設定変更のタイミング
開発環境から公開環境へ移行する際は、エラー表示の設定を切り替えるタイミングに注意が必要です。
一般的に公開環境では以下の設定が推奨されます。
display_errors
を0
に設定して、エラーがHTML上に表示されないようにするerror_reporting
を必要最小限のレベルに抑える- サーバーログにのみエラー情報を出力する設定に変更する
適切なタイミングとしては、テスト環境での動作確認後、デプロイ前に事前設定を見直すことが挙げられます。
セキュリティ対策の実施方法
公開環境では、エラーメッセージに機密情報が含まれないようにするため、以下の点に注意してください。
- エラーメッセージにソースコードのパスやデータベース接続情報などが表示されないように、
display_errors
をオフにする - 詳細なエラー情報はサーバーのログに限定し、適切なアクセス権限を設定する
- 可能であれば、エラー発生時にユーザーに対して標準的なエラーページにリダイレクトする
これらの設定は、ユーザー情報の保護や内部情報の漏洩防止に有効であり、公開環境では必ず対策を講じることが重要です。
まとめ
この記事では、php.iniの設定、コード内でのエラー制御、ブラウザ上でのエラー出力確認方法を学びました。
全体を通じて、PHPでのエラー表示設定の基本と各技法の実践的方法が整理された内容となりました。
ぜひ、ご自身のプロジェクトに実際の設定を取り入れてみてください。