php error をconsoleに出力

php error をconsoleに出力のイメージ php

コマンドラインからphpを実行させた場合、デフォルト設定ではエラー発生した際、なにも出力されない
$ php a.php
$
という結果になります。

phpのソースをいじらずに、エラーになるかどうか確認したい場合はlintを使います
$ php -l a.php
Errors parsing a.php

正常時:
No syntax errors detected in a.php

残念ながら、エラーがあるよ、ないよというレベルでしか確認できません。

php.iniのdisplay_errorsを1にすることで標準出力、display_errors=2とすることで標準エラー出力に出力させることができます。

ただ、php.iniは本番環境でも参照されるものなので、単純な確認で変更したくありません。

php error consoleに簡単出力

phpコマンドには、-dオプションが存在します。

       --define foo[=bar]
       -d foo[=bar]   Define INI entry foo with value bar

この-define/-dを使うことで、いまから実行するphpのみエラーレベルを指定&console出力させることが可能になります。

全部のエラーをconsoleに出力させるにはdisplay_errors=1とerror_reporting= 2147483647を指定します。
$ php -d display_errors=1 -d error_reporting=2147483647 a.php
Parse error: parse error, expecting `”variable (T_VARIABLE)”‘ or `”${ (T_DOLLAR_OPEN_CURLY_BRACES)”‘ or `”{$ (T_CURLY_OPEN)”‘ in a.php

これにより、ソースはいじらずに、動作確認で検証したいときのみ、consoleにエラーを表示できるようになります。

aliasを設定するとさらに便利になります

毎回毎回打ち込むのは、あまりにも面倒なので、例えばaliasをつかって定義すると簡単になります。
.cshrc/.bashrcなどに以下を追加
.shrc/.bashrc
alias phpconsole=’php -d display_errors=1 -d error_reporting=2147483647′

.cshrc
alias phpconsole php -d display_errors=1 -d error_reporting=2147483647

$ phpconsole a.php
と打ち込むとaliasで展開され
$ php -d display_errors=1 -d error_reporting=2147483647 a.php
が実行されます。

ソースコード修正ありならこちら

ini_set('display_errors',1);
error_reporting(-1);

ini_set関数で設定を上書き、error_reporting関数の引数-1は、「全ての PHP エラーを表示する」指定です。

コメント

タイトルとURLをコピーしました