为什么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()
到不存在的文件,数组声明中的语法错误等。为什么会这样呢?
谢谢。
-l
语法检查(lint)
-l
执行静态语法检查。代码永远不会实际执行。在你的代码中没有语法错误。
文件末尾的乱码被认为是常量(因为它是常量的有效名称),未定义的常量计算为它们的字符串表示形式(并导致E_NOTICE)。由于它是文件中的最后一条语句,因此缺少分号也不会导致语法错误。
由于PHP是一种动态语言,如果不执行代码,无法检测到未定义的常量- define()
毕竟只是一个正常的函数。
这些不是语法错误,这些是运行时错误。