※こちらの記事は、プロスタ編集部が学習者の多いPHPの技術系記事を公開することで、皆様の学習にお役に立ちたい意図で投稿しております。
参考サイト:【PHP入門】画面にエラーを表示する方法
#【PHP入門】画面にエラーを表示する方法
PHPでプログラムを作成中に不具合が発生した場合に、ブラウザなどの画面上でエラー確認しながら、対応する場面はよくあります。
今回は、エラーを表示する方法として「display_errors」とPHPの設定項目を使った方法を紹介します。
display_errorsは以下の2パターンで設定が可能です。
1.php.iniで設定する
2.ini_setを用いてphpファイル内で設定する
今回は以下のコード「sample.php」を使って、上記2種類の方法を比較しながら、紹介していきます。
<?php
// 正常なコード
echo "start<br/>";
// 変数の前に$がないのでエラーになる
echo test == 1;
// 正常なコード
echo "end<br/>";
##php.iniで設定する
プログラムを作成/動作確認しているWebサーバの設定が変更可能な場合は、php.iniの以下の項目を、
display_errors = OFF
以下のように変更することで、エラーを画面に表示可能です。
display_errors = ON
php.iniを設定後は、Webサーバを再起動することで、設定が反映されます。
上記を設定後、ブラウザで最初に提示したプログラムのPHPファイルにアクセスすると、「Notice: Use of undefined constant test – assumed ‘test’ in /Library/WebServer/Documents/sample.php on line 6」と画面上に表示されます。
##ini_setを用いてphpファイル内で設定する
前述のphp.iniで設定する方法は、設定変更後にWebサーバを再起動する必要があります。その場合、レンタルサーバーや商用環境で使用しているサーバでは、設定変更をすることが困難な状況もあります。
そこでPHPのファイル内でdisplay_errorsを設定する方法として、ini_set関数を使用した方法を紹介します。エラーを確認したいファイルの先頭など、検証したいコードの前に以下のコードを追加します。
// エラー表示なし
ini_set('display_errors', 0);
// エラー表示あり
ini_set('display_errors', 1);
上記の「エラー表示あり」の設定を追加してファイルを保存後、先ほど同様にブラウザでアクセスすると、同様にエラーが表示されるようになります。
ここでの違いは設定値がON/OFFではなく、1/0での設定によるものです。
ただし下記のようなプログラムのタイプミスによりエラーは、PHPのプログラム解析中のエラーになるため、ini_set関数でdisplay_errorsを設定しても、画面上にエラーメッセージが表示されません。
// echo関数のタイプミスによるエラー
echoi "test"
これはPHPのプログラムファイルが実行途中でエラーになり、ini_set関数の実行による設定が反映される前にプログラムが終了してしまうためです。このような場合には注意が必要です。