Heim  >  Artikel  >  Backend-Entwicklung  >  PHP异常报告设置不生效

PHP异常报告设置不生效

WBOY
WBOYOriginal
2016-06-13 12:04:03927Durchsuche

PHP错误报告设置不生效?
遇到这样的问题,自己机子上装的(MAX OS,PHP5.4.24),配置文件里是打开了错误报告 的( display_errors = On;和error_reporting = E_ALL & ~E_NOTICES),但我现在程序里想关闭错误报告,
    ini_set('display_errors', 0);
    error_reporting(0);

为什么不生效呢?就算上面这两函数用上了,出了致命错误后,一直是报的。难道没办法屏蔽吗?一定要修改配置文件 为OFF?
于是我看了一下手册。还真有一句话:
Note:
尽管 display_errors 也可以在运行时设置 (使用 ini_set()), 但是脚本出现致命错误时任何运行时的设置都是无效的。 因为在这种情况下预期运行的操作不会被执行。

上面这话怎么解理?意思是只是你程序出致命错误了,任何ini_set都是无效的? 那么错误报告是否显示,全完看ini配置。所以想临时修改报告 是不可能的?只能通过修改配置然后重启服务。。。。


求大神讲解。。



------解决方案--------------------
如果你的错误出现在 ini_set('display_errors', 0); 之前
那么错误信息是一定要输出的
而致命错误多为语法错误,必然会出现在运行之前

你可以将错误信息定向到日志文件
也可以对开发环境和运行环境使用不同的 php.ini
------解决方案--------------------
ini_set('display_errors','off');
error_reporting(0);

放在頁面最前試試。
------解决方案--------------------
display_errors 是显示错误的意思
你把它关闭了,错误怎么能显示呢?
把错误信息重定向的文件,并不表示可以关闭 display_errors,只是改变了输出设备

有一些错误是要到运行时才会出现的,比如函数缺少参数,除数为0.....
------解决方案--------------------

本帖最后由 xuzuning 于 2014-08-01 17:03:57 编辑 不要做这无谓的事情
1、如果关闭错误显示,那么在语法分析阶段所出现的错误将直接导致 HTTP 500 错
所以至少需要打开错误显示并重定向到错误日志
2、所有运行期间产生的错误都可以通过 set_error_handler 函数重定向到自定义的错误处理程序
在自定义的错误处理程序中,你就可以按你的意愿实现期望的动作了
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn