レンタルサーバーでPHPのエラーを表示させたいとき

シェアする

私はさくらインターネットのレンタルサーバーを使っていますが、ブラウザから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 にそれぞれ値を入れることで、下の実行結果のように、エラー表示できるようになります。

これは、さくらインターネットのレンタルサーバーだけでなく、いろんなところで使えそうですね。

まとめ

レンタルサーバーでPHPを実行したときにエラー出力されない場合の対応について、

  • さくらインターネットであれば、コントロールパネルからphp.iniを編集
  • コマンドラインであれば、php.ini をいじらなくても、コマンドラインの引数 -d で一時的にINIファイルのエントリーを定義できる

ということで、対応可能です。

エラーに悩まされたら、ぜひ、活用してください。

 

この記事が気に入ったら
いいね ! しよう