给出以下脚本
<?php
ini_set('display_errors','On');
error_reporting(E_ALL);
thisisanerror
?>
Run Code Online (Sandbox Code Playgroud)
我得到了预期
Notice: Use of undefined constant error - assumed 'error' in /htdocs/test.php on line 8
Run Code Online (Sandbox Code Playgroud)
但是如果我在脚本中添加一些内容
<?php
ini_set('display_errors','On');
error_reporting(E_ALL);
error
function test () {
echo('test');
}
?>
Run Code Online (Sandbox Code Playgroud)
我明白了
HTTP Error 500 (Internal Server Error): An unexpected condition was encountered while the server was attempting to fulfill the request.
Run Code Online (Sandbox Code Playgroud)
为什么我在后一种情况下得到500错误而不是正常的语法错误?不应该display_errors总是显示错误?
第二个代码示例是完全语法错误.这意味着PHP不会进展到代码执行点,并且会在解析时死掉.由于没有执行代码ini_set(),因此看不到调用的效果,因此您不会收到指示问题的PHP文本错误.
解析错误是致命的,并且Web服务器(正确地)设置为使用500响应代码处理PHP致命错误.由于您的PHP脚本没有产生任何输出,因此Web服务器将返回500条件的默认错误文档.
如果你想在浏览器中看到解析错误的文本消息 - 顺便说一下,这通常不会产生生产 - 你需要在php.ini或使用.htaccess文件中打开错误报告.
| 归档时间: |
|
| 查看次数: |
3163 次 |
| 最近记录: |