PHP`-l`标志没有找到错误

时间:2013-03-03 12:32:30

标签: php

为什么PHP -l切换不会在test.html中找到错误。

$ cat test.html 
<?php
error_reporting(E_ALL);
echo "Hello, world!";

sdfsdfsdfsdf

?>
$ php -dhtml_errors=0 -ddisplay_errors=On -l test.html 
No syntax errors detected in test.html
$ php test.html 
Hello, world!PHP Notice:  Use of undefined constant sdfsdfsdfsdf - assumed 'sdfsdfsdfsdf' in test.html on line 7
$ 

也找不到其他类型的错误,例如未定义的函数,require_once()到不存在的文件,数组声明中的语法不正确等等。为什么会这样?

感谢。

2 个答案:

答案 0 :(得分:3)

  

-l仅限语法检查(lint)

-l执行静态语法检查。代码永远不会被实际执行。在您的代码中没有语法错误。

文件末尾的乱码被认为是常量(因为它是常量的有效名称),未定义的常量计算为其字符串表示(并导致E_NOTICE)。由于它是文件中的最后一个语句,因此缺少的分号也不会导致语法错误。

由于PHP是一种动态语言,因此在不执行代码的情况下无法检测到未定义的常量 - define()毕竟只是一个正常的函数。

答案 1 :(得分:2)

这些不是语法错误,这些是运行时错误。 -l只显示文件。

相关问题