如何停止PHP记录PHP Notice错误日志

10

我正在尝试不记录通知错误,这些错误被写入了我的服务器上的错误日志文件。我已经在我的index.php文件的顶部尝试过以下代码:

ini_set('display_errors', 0);  
error_reporting(E_ALL ^ E_NOTICE);

但是我在错误日志文件中仍然得到PHP注意错误。

我正在一个共享托管环境中,所以我不能编辑我的php.ini文件。

phpinfo()告诉我:

- Version 5.2.12
- error_reporting 6143
- error_log error_log
- safe_mode Off

4
改善通知的原因怎么样?而不是对此视而不见?它们并非毫无原因地发生。 - Gumbo
1
通知的原因并不总是你可以控制的,例如我正在使用WordPress,核心中有几个通知。希望抑制非致命错误是合理的。 - rickibarnes
4个回答

10

注意!代码(如30711)在不同的PHP版本中可能会有所不同。最好在应用配置的服务器上检查echo。 - spiritoo

4

尝试执行以下操作:

error_reporting(E_ALL & ~E_NOTICE);

error_reporting()指令始终有效(PHP_INI_ALL)。

您确定没有包含任何更改错误报告级别的库吗?


执行error_reporting(0);,然后执行以下操作:

var_dump(error_reporting());

输出是什么?


我已经在整个项目中搜索了“error_reporting”,只在index.php文件中找到了一个匹配项,而那是我添加的“error_reporting”。也没有出现“set_error_handler”的情况。 - magenta
@magenta:也没有ini_set()吗? - Alix Axel
1
var_dump输出int(6135),它是E_ALL&〜E_NOTICE。 - magenta
还有另外两个ini_sets,但它们设置的是sendmail_from。 - magenta
3
6135 = E_RECOVERABLE_ERROR + E_USER_NOTICE + E_USER_WARNING + E_USER_ERROR + E_COMPILE_WARNING + E_COMPILE_ERROR + E_CORE_WARNING + E_CORE_ERROR + E_PARSE + E_WARNING + E_ERROR。这里没有E_NOTICE - Alix Axel
显示剩余6条评论

1
你的日志中是否出现了通知或“USER”通知?
要同时禁用两者,请使用以下命令:
error_reporting(E_ALL & ~E_NOTICE & ~E_USER_NOTICE);

在日志中显示为“PHP Notice”。 - magenta
我认为两者都被记录为“PHP Notice”。 你可以搜索php代码中的“trigger_error”或E_USER_NOTICE。 - Bob Fanger

0

我也尝试了那个,包括你的变化 - 仍然被记录。在php.ini中有没有一种方法可以使ini_set()和error_reporting()不起作用? - magenta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接