为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 PHP 不显示所有的语法错误?

为什么 PHP 不显示所有的语法错误?

PHP
30秒到达战场 2023-04-15 10:45:46
这是我的错误设置ini_set('display_errors', 1);ini_set('display_startup_errors', 1);error_reporting(E_ALL|E_PARSE);现在我写这个测试代码:helloooooo;它告诉我:使用未定义的常量 hellooooo ...到目前为止,一切都很好。现在我从所谓的代码末尾删除分号:helloooooo什么都不显示。它显示一个白页。根据我的经验,每当我看到一个白页时,就会出现语法错误,所以我会寻找拼写错误。问题是为什么 PHP 在这种情况下没有帮助?有人说:语法检查在执行任何代码之前完成。因此,如果存在语法错误,它就无法执行 ini_set() 函数。PHP 解释器如何先应用设置然后执行其余代码?JavaScript 解释器可以在运行时检测到相同的错误。试试这个:<script>helloooooo</script>现在转到 Firefox => 工具 => WebDeveloper => WebConsoleReferenceError: hellooooo 未定义
查看完整描述

1 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

PHP 的默认错误报告机制(可能)会抑制错误输出。如果您尝试使用该函数在运行时打开它error_reporting,那么 PHP 将首先必须成功解析文件,然后执行它以设置新的所需错误报告级别。当存在语法错误时失败,因为 PHP 无法成功解析和执行文件以更改错误报告级别。语法错误被抑制了,因为……好吧……它还不能改变错误报告级别。

Javascript 没有,它会输出遇到的所有错误。

PHP 喜欢抑制错误的原因是因为它在服务器上运行,内部服务器调试细节不应该显示在公共网页上。在没有实际意义的 Javascript 中,因为它无论如何都在浏览器中运行,并且错误会报告到控制台,而普通用户看不到。此外,PHP 确实将所有错误记录到一个日志文件中,因此与您在 Javascript 中查找错误的方式相同,您也可以明确地在 PHP 的日志文件中查找它们。


查看完整回答
反对 回复 2023-04-15
  • 1 回答
  • 0 关注
  • 135 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信