我打電話從Windows批處理文件PHP皮棉,就像這樣:爲什麼lint不能告訴我解析錯誤的行號和性質?
@echo off
for %%f in (*.php) do php -l %%f
當文件包含語法錯誤,它只輸出Errors parsing xxx.php
。有沒有什麼辦法讓它告訴我錯誤的性質是什麼,以及它在哪裏?也許另一個開關?
我打電話從Windows批處理文件PHP皮棉,就像這樣:爲什麼lint不能告訴我解析錯誤的行號和性質?
@echo off
for %%f in (*.php) do php -l %%f
當文件包含語法錯誤,它只輸出Errors parsing xxx.php
。有沒有什麼辦法讓它告訴我錯誤的性質是什麼,以及它在哪裏?也許另一個開關?
我接受了查爾斯的回答,但認爲我應該添加一些細節,因爲我不得不做一些額外的狩獵來找出該做什麼。
問題是我沒有看到stderr
輸出,所以我開始在相關命令的末尾添加2>&1
。這仍然沒有幫助,所以我意識到問題是PHP根本不輸出stderr的東西。我去了PHP安裝目錄,看着php.ini,發現默認情況下,display_errors
是Off
。將其更改爲On
,現在可以使用。
您使用的是什麼版本的PHP?作爲5.3,行號包含在皮棉產量:
[[email protected] ~]$ 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"
[[email protected] ~]$ 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
[[email protected] ~]$
,因爲這將stdout和標準錯誤出現兩次錯誤。由於我在Windows上使用過批處理文件,可能是因爲您使用的版本只在stderr上發出錯誤,並且批處理文件丟棄了stderr的輸出,所以它一直是long?
如果你來到這裏是因爲「錯誤解析foo.php」沒有任何細節,你錯過了查爾斯的評論,你可能會尋找這樣的:
php -d display_errors=1 -l foo.php
感謝查爾斯!
例子:
[somewhere]# php -l submit.php Errors parsing submit.php [somewhere]# php -d display_errors=1 -l submit.php Parse error: syntax error, unexpected T_VARIABLE in submit.php on line 226 Errors parsing submit.php
謝謝謝謝謝謝謝謝 – 2016-06-25 02:01:23
噢,我的,這是意想不到的。你會認爲*要求PHP檢查文件的語法*默認情況下會報告語法錯誤!請記住,您可以使用'-d'選項從命令行操作php.ini參數:'php -d display_errors = 1 -l foo.php' – Charles 2010-07-27 16:42:12
感謝您的提示! (請接受此答案,而不是上述不正確的答案;-) – yoyo 2012-03-07 22:47:45