私はさくらインターネットのレンタルサーバーを使っていますが、ブラウザからPHPファイルを実行しても、サーバーにSSHでログインしてPHPをコマンドラインから実行しても、エラー表示がされません。
これはさくらインターネットのレンタルサーバーでは、初期状態ではPHPのエラー出力がOFFになっているからです。
この記事では、PHPのエラーを記録させる方法を説明します。
PHPエラー表示させる方法
ブラウザからPHP実行したときのエラー出力
サーバーでは通常、PHPの設定は、php.iniで行います。レンタルサーバーでも、php.ini が存在します。
さくらインターネットの場合、コントロールメニューの「アプリケーションの設定→PHP設定の編集」からできます。
例えば、
(ホームディレクトリ)/log/phperror.log のファイルに全ての種類のエラーを記録するためには、下図のように設定します。
それぞれの意味は下のとおりです。
- display_errors:画面表示の制御。
ログファイルに記録したいのでOFF - error_reporting:
出力させるエラーの種類を指定。- E_ERROR
- E_WARNING
- E_PARSE
- E_NOTICE
などがありますが、全て指示は - E_ALL
- log_errors:ログファイルに出力するか?
- error_log:ログファイルを指定
「保存する」で確定します。
すると、下記のようにerror_logで指定したファイルにエラーメッセージが記録されます。
サーバーにSSHログインしてPHPを実行したときのエラー出力
しかし、phpをコマンドラインから実行しても、なんの表示もなく終了してます。
このときは、コマンドラインでphp に引数を設定しましょう。
-d オプションを使うことで、INI設定をコマンドラインから与えることができます。
display_error と error_reporting にそれぞれ値を入れることで、下の実行結果のように、エラー表示できるようになります。
これは、さくらインターネットのレンタルサーバーだけでなく、いろんなところで使えそうですね。
1 2 3 4 5 |
% php -d display_errors=on -d error_reporting=E_ALL greeting_get.php Parse error: syntax error, unexpected '=>' (T_DOUBLE_ARROW), expecting ')' in /home/xxxx/apitest/ret_msg02.php on line 8 % |
まとめ
レンタルサーバーでPHPを実行したときにエラー出力されない場合の対応について、
- さくらインターネットであれば、コントロールパネルからphp.iniを編集
- コマンドラインであれば、php.ini をいじらなくても、コマンドラインの引数 -d で一時的にINIファイルのエントリーを定義できる
ということで、対応可能です。
エラーに悩まされたら、ぜひ、活用してください。
コメント