Php 为什么';t lint告诉我解析错误的行号和性质?

Php 为什么';t lint告诉我解析错误的行号和性质?,php,lint,Php,Lint,我从Windows批处理文件调用php lint,如下所示: @echo off for %%f in (*.php) do php -l %%f 当文件包含语法错误时,它只输出解析xxx.php时的错误。有没有办法让它告诉我错误的性质,它在哪一行?也许是另一个开关?您使用的是什么版本的PHP?从5.3开始,lint输出中包括行号: [charles@server ~]$ cat syntax_error.php <?php echo "This line is legal\n"; ec

我从Windows批处理文件调用php lint,如下所示:

@echo off
for %%f in (*.php) do php -l %%f

当文件包含语法错误时,它只输出解析xxx.php时的
错误
。有没有办法让它告诉我错误的性质,它在哪一行?也许是另一个开关?

您使用的是什么版本的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 ~]$
[charles@server~]$cat syntax\u error.php

我已经接受了查尔斯的回答,但我想我应该补充一些细节,因为我必须做一些额外的搜寻来找出该做什么

问题是我没有看到
stderr
输出,因此我开始在相关命令的末尾添加
2>&1
。这仍然没有帮助,所以我意识到问题在于PHP根本没有输出stderr的东西。我转到PHP安装目录并查看PHP.ini,发现默认情况下,
display\u errors
Off
。将其更改为
上的
,现在可以使用。

如果您在没有任何详细信息的情况下收到“Errors parsing foo.php”消息,则在运行php lint时,此参数将显示错误:

php-d display\u 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 [某处]#php-l submit.php 分析submit.php时出错 [某处]#php-d display_errors=1-l submit.php 解析错误:语法错误,在第226行的submit.php中出现意外的T_变量
解析submit.php时出错这帮助我找到了问题所在,因此我接受了它。查看我的答案以了解更多详细信息。你能接受你在下面发布的答案吗,因为它实际上解释了问题?@Hammerite请切换接受标志-我会删除此答案以使其更明显,但你不能自行删除已接受的答案。谢谢Charles的帮助!:)哦,天哪,那是出乎意料的。您可能会认为,要求PHP检查文件的语法在默认情况下会报告语法错误!请记住,您可以使用
-d
选项从命令行操作php.ini参数:
php-d display\u errors=1-l foo.php
感谢您的提示!(请接受此答案,而不是上述错误答案;-)