给出以下脚本
<?php
ini_set('display_errors','On');
error_reporting(E_ALL);
thisisanerror
?>
我得到了预期的
Notice: Use of undefined constant error - assumed 'error' in /htdocs/test.php on line 8
但如果我在脚本中添加内容
<?php
ini_set('display_errors','On');
error_reporting(E_ALL);
error
function test () {
echo('test');
}
?>
我得到了
HTTP Error 500 (Internal Server Error): An unexpected condition was encountered while the server was attempting to fulfill the request.
为什么在后一种情况下我收到500错误而不是正常的语法错误? display_errors不应该总是显示错误吗?
答案 0 :(得分:6)
第二个代码示例是一个彻头彻尾的语法错误。这意味着PHP不会进展到代码执行点,并且会在解析时死掉。由于没有执行代码,因此看不到ini_set()
调用的影响,因此您不会收到指示问题的PHP文本错误。
解析错误是致命的,Web服务器(正确地)设置为使用500响应代码处理PHP致命错误。由于您的PHP脚本没有产生任何输出,因此Web服务器将返回500条件的默认错误文档。
如果你想在浏览器中看到解析错误的文本消息 - 顺便说一下,这通常不会产生生产 - 你需要在php.ini或使用.htaccess打开错误报告文件。
答案 1 :(得分:2)
如果强制php在运行时显示错误对你不起作用,你可以尝试其他选项,比如在php.ini中设置它:
error_reporting = E_ALL | E_STRICT
display_errors: On
祝你好运!