2010-07-27 56 views

回答

21

我接受了查爾斯的回答,但認爲我應該添加一些細節,因爲我不得不做一些額外的狩獵來找出該做什麼。

問題是我沒有看到stderr輸出,所以我開始在相關命令的末尾添加2>&1。這仍然沒有幫助,所以我意識到問題是PHP根本不輸出stderr的東西。我去了PHP安裝目錄,看着php.ini,發現默認情況下,display_errorsOff。將其更改爲On,現在可以使用。

+16

噢,我的,這是意想不到的。你會認爲*要求PHP檢查文件的語法*默認情況下會報告語法錯誤!請記住,您可以使用'-d'選項從命令行操作php.ini參數:'php -d display_errors = 1 -l foo.php' – Charles 2010-07-27 16:42:12

+0

感謝您的提示! (請接受此答案,而不是上述不正確的答案;-) – yoyo 2012-03-07 22:47:45

0

您使用的是什麼版本的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

+0

幫我找出問題是什麼,所以我已經接受了它。查看我的答案瞭解更多詳情。 – Hammerite 2010-07-27 12:40:41

+0

您是否可以接受您在下面發佈的答案,因爲它實際上解釋了問題? – 2014-04-25 14:56:38

+0

@Hammerite請切換Accepted標誌 - 我會刪除此答案以使其更明顯,但不能自行刪除已接受的答案。 – Charles 2014-04-25 16:42:10

32

如果你來到這裏是因爲「錯誤解析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
+0

謝謝謝謝謝謝謝謝 – 2016-06-25 02:01:23

相關問題