コマンドラインから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 エラーを表示する」指定です。
コメント