Home  >  Article  >  Backend Development  >  php 设置error_reporting(0)和ini_set('display_errors', 0)之后,还是显示错误

php 设置error_reporting(0)和ini_set('display_errors', 0)之后,还是显示错误

WBOY
WBOYOriginal
2016-06-06 20:46:071320browse

php 5.4
apache 2.2

php 设置error_reporting(0)和ini_set('display_errors', 0)之后,还是显示错误
关闭错误报告和错误显示
php 设置error_reporting(0)和ini_set('display_errors', 0)之后,还是显示错误
依然会显示错误

按照我的理解,error_reporting(0)之后就应该不会显示错误了,这是怎么回事?

后来我又试着在php.ini者.htaccess中将display_errors设为off,才抑制了错误报告的显示。

而根据PHP手册中的描述

display_errors指令是属于 PHP_INI_ALL 因而就可以在任何地方被设定,包括ini_set() 。

这又是怎么回事?

回复内容:

php 5.4
apache 2.2

php 设置error_reporting(0)和ini_set('display_errors', 0)之后,还是显示错误
关闭错误报告和错误显示
php 设置error_reporting(0)和ini_set('display_errors', 0)之后,还是显示错误
依然会显示错误

按照我的理解,error_reporting(0)之后就应该不会显示错误了,这是怎么回事?

后来我又试着在php.ini者.htaccess中将display_errors设为off,才抑制了错误报告的显示。

而根据PHP手册中的描述

display_errors指令是属于 PHP_INI_ALL 因而就可以在任何地方被设定,包括ini_set() 。

这又是怎么回事?

PHP不是一行一行去解析然后执行的,如果这样上下文根本无法绑定起来。是一个文件一个文件去解析的。像你这样一个文件没有解析成功,那么这整个文件的代码都无法执行的。 你可以放在 include 的文件里面将你的 sdfsdf 放里面看看。要保证主文件是可编译通过的,再试试

<code class="lang-php"><?php error_reporting(0);
</code></code>

PS:不是PHP没有执行是你写的代码没有执行。

在PHP代码的第一行就加上这句,可以屏蔽一些非关键的报错。
比如你的输入的这段代码,只是变量$system_path没有被定义。
PHP默认没有定义的变量会报错。

只要通过

<code class="lang-PHP"><?php ini_set("error_reporting",E_ALL ^ E_NOTICE);
</code></code>

就可以屏蔽非关键的报错。
而一旦出现比这个更高级的错误,都属于会让整个PHP网站无法运行的关键错误。

屏蔽错误不利于自己Debug,慎用。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn