> 백엔드 개발 > PHP 튜토리얼 > PHP异常报告设置不生效

PHP异常报告设置不生效

WBOY
풀어 주다: 2016-06-13 12:04:03
원래의
960명이 탐색했습니다.

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 函数重定向到自定义的错误处理程序
在自定义的错误处理程序中,你就可以按你的意愿实现期望的动作了
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿