私は次のように、Windowsバッチファイルからphplintを呼び出しています。
@echo off
for %%f in (*.php) do php -l %%f
ファイルに構文エラーが含まれている場合、ファイルは。のみを出力しますErrors parsing xxx.php
。エラーの性質とその行を教えてもらう方法はありますか?多分別のスイッチ?
詳細なしで「foo.phpの解析中にエラーが発生しました」というメッセージが表示された場合、PHPlintを実行するとこのパラメーターにエラーが表示されます。
php -d display_errors=1 -l foo.php
例:
[どこか]#php -l submit.php submit.phpの解析中にエラーが発生しました [どこか]#php -d display_errors = 1 -l submit.php 解析エラー:構文エラー、226行目のsubmit.phpに予期しないT_VARIABLE submit.phpの解析中にエラーが発生しました
私はチャールズの答えを受け入れましたが、何をすべきかを見つけるために追加のハンティングをしなければならなかったので、いくつかの詳細を追加する必要があると思いました.
問題は、stderr
出力が表示されないことだったので2>&1
、関連するコマンドの末尾に追加することから始めました。それでも解決しないので、問題は PHP が標準エラー出力をまったく出力していないことにあることに気付きました。PHP インストール ディレクトリに移動し、php.ini を調べたところ、デフォルトdisplay_errors
でOff
. に変更し、On
動作するようになりました。
どのバージョンの PHP を使用していますか? 5.3 以降、lint 出力に行番号が含まれています。
[charles@server ~]$ cat syntax_error.php
<?php
echo "This line is legal\n";
echo I'm a syntax error!\n;
echo "This line never gets reached.\n"
[charles@server ~]$ php -l syntax_error.php
PHP Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting ',' or ';' in syntax_error.php on line 3
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting ',' or ';' in syntax_error.php on line 3
Errors parsing syntax_error.php
[charles@server ~]$
stdout と stderr の両方に出力されるため、エラーが 2 回表示されます。Windowsでバッチファイルを扱ってから長い時間が経ちました.おそらく、使用しているバージョンはstderrでのみエラーを発し、バッチファイルはstderrの出力を破棄していますか?