这是我的错误设置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 的日志文件中查找它们。
- 1 回答
- 0 关注
- 135 浏览
添加回答
举报
0/150
提交
取消