编辑:我的环境如下(这与以下内容相关) 回答):
- Microsoft IIS 10.0 Express
- Windows 7 Professional SP1
- PHP版本5.6.16 x86 FastCGI
我试图找出设置的目的" display_errors"具有。 在下面的代码中,我试图隐藏在第9行引发的PHP Notice 。当然,人们会认为只需设置
display_errors = 'Off'
会做到这一点,但似乎没有效果。
我理解" error_reporting"允许您选择捕获哪些错误,以及" display_errors"确定错误消息是否回显给用户。我错了吗?在我的大多数Google搜索中,我看到人们设置两者
error_reporting = 0
和
display_errors = 'Off'
但是,为什么甚至打扰
display_errors = 'Off'
什么时候没有效果?
我的测试代码:
<?php
//ini_set("error_reporting", 0);
ini_set("display_errors", "Off");
ini_set("display_startup_errors", "Off");
date_default_timezone_set("America/Chicago");
echo "Hey<br />";
echo $myarr["hey"];
当我运行此代码时,我看到以下错误消息(这是图像的链接,因为我没有足够的声誉在此处发布):
http://i.imgur.com/mupV8BO.png
PHP:应该向用户隐藏为第9行生成的错误消息。为什么&#34; display_errors&#34;如果它什么都不做就存在?
答案 0 :(得分:2)
经过反复试验并使用ShiraNai7的解释后,我发现这是PHP在Microsoft IIS和FastCGI上的一个错误。请参阅错误链接:
错误#44729 display_errors =关闭不受尊重
答案 1 :(得分:1)
是的,如果一个人不熟悉内部工作原理,那么PHP错误及其配置可能看起来有点非常奇怪。有很多事情要发生。
display_errors
error_reporting
支持的错误代码将不会打印log_errors
error_reporting
set_error_handler()
false
,将调用PHP的默认错误处理程序(并根据设置打印/记录错误)null
或true
或抛出异常,则不会调用PHP的默认错误处理程序(因此它不会打印/记录任何内容)。 set_exception_handler()
但是,为什么甚至打扰&#34; display_errors =&#39; Off&#39;&#34;什么时候它没有效果?
上述设置的组合使display_errors
毫无用处。
示例:
display_errors
必须在生产服务器上的 php.ini 中off
,以防止泄露可能敏感的数据
display_errors
设置为off
,将log_errors
设置为on
error_log
,则将display_errors
设置为off