PHP ' -l '标记找不到错误

  • 本文关键字:找不到 错误 PHP 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()到不存在的文件,数组声明中的语法错误等。为什么会这样呢?

谢谢。

-l语法检查(lint)

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

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

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

这些不是语法错误,这些是运行时错误。

相关内容

最新更新