为什么lint不告诉我解析错误的行号和性质?

Ham*_*ite 18 php lint

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

@echo off
for %%f in (*.php) do php -l %%f
Run Code Online (Sandbox Code Playgroud)

当文件包含语法错误时,它只输出Errors parsing xxx.php.有没有办法让它告诉我错误的本质是什么,它是什么线?也许另一个开关?

PJ *_*net 38

如果您在没有任何详细信息的情况下收到"错误解析foo.php"消息,则此代码将在您运行PHP lint时显示错误:

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


Ham*_*ite 21

我已经接受了查尔斯的回答,但我想我应该添加一些细节,因为我不得不做一些额外的狩猎来找出要做的事情.

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

  • 哦,我的,这是出乎意料的.您认为*要求PHP检查文件的语法*默认情况下会报告语法错误!请记住,您可以使用`-d`选项从命令行操作php.ini参数:`php -d display_errors = 1 -l foo.php` (16认同)