关闭PHP 5.3中不推荐使用的错误


127

我的服务器正在运行PHP 5.3,而我的WordPress安装正在向我吐出这些错误,从而导致session_start()中断。

Deprecated: Assigning the return value of new by reference is deprecated in /home//public_html/hub/wp-settings.php on line 647

Deprecated: Assigning the return value of new by reference is deprecated in /home//public_html/hub/wp-settings.php on line 662

Deprecated: Assigning the return value of new by reference is deprecated in /home//public_html/hub/wp-settings.php on line 669

Deprecated: Assigning the return value of new by reference is deprecated in /home//public_html/hub/wp-settings.php on line 676

Deprecated: Assigning the return value of new by reference is deprecated in /home//public_html/hub/wp-settings.php on line 712

这很烦人,但我不想关闭屏幕错误报告功能。如何禁用这些烦人的已弃用警告?

我正在运行WordPress 2.9.2。


3.3.1是不是Wordpress的最新版本?
Shadur 2012年

他似乎喜欢带有旧wordpress的旧php
Qchmqs 2012年

Answers:


203

您可以通过调用以下函数在代码中进行操作。

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

要么

error_reporting(E_ALL ^ E_DEPRECATED);

谢谢Robus,这还会杀死任何php错误报告吗?
atwellpub,2010年

6
不,第一个告诉php显示ERROR / WARNING / PARSE / NOTICE错误,第二个告诉php显示除已弃用的错误之外的所有错误。
Robus 2010年

1
在Ubuntu上使用PHP 5.5.9“ error_reporting = E_ALL&〜E_DEPRECATED&〜E_STRICT”无效....但是,在我的示例中为“ @mysql_connect();” 做到这一点:-(
molokoloco

@molokoloco您做错了两次。首先,您没有解决任何问题。你只是沉默了。2,您仍在使用mysql不推荐使用的软件。您至少应该切换到mysqli
Marcin Orlowski '16

不起作用 它被覆盖在某个地方吗?你把它放在哪里?
亚历克斯(Alex)

22

我需要适应这个

error_reporting = E_ALL & ~E_DEPRECATED

21

要仅获取那些导致应用程序停止运行的错误,请使用:

error_reporting(E_ALL ^ (E_NOTICE | E_WARNING | E_DEPRECATED));

这将停止显示通知,警告和不建议使用的错误。


13

先前所有的答案都是正确的。由于没有人暗示过如何关闭PHP中的所有错误,因此我想在这里提一下:

error_reporting(0); // Turn off warning, deprecated,
                    // notice everything except error

可能有人觉得它有用...


11

我只是遇到了类似的问题,其中SEO插件发出了大量警告,使我的博客磁盘使用量超出计划限制。

我发现您必须在wp-config.php文件中的wp-settings.php要求之后包括error_reporting命令:

   require_once( ABSPATH .'wp-settings.php' );
   error_reporting( E_ALL ^ ( E_NOTICE | E_WARNING | E_DEPRECATED ) );

这样,您就不会在警告日志文件中附加警告,注意事项或不赞成使用的行!

在WordPress 3.8上进行了测试,但我想它适用于所有安装。


9

在文件wp-config.php中,您可以找到常量WP_DEBUG。确保将其设置为false。

define('WP_DEBUG', false);

这适用于WordPress3.x。


7

您必须编辑PHP配置文件。找到线

error_reporting = E_ALL

并替换为:

error_reporting = E_ALL ^ E_DEPRECATED

如果您无权访问配置文件,则可以将此行添加到PHP WordPress文件(可能是headers.php):

error_reporting(E_ALL ^ E_DEPRECATED);

最好将其添加到中wp-config.php。可以使用配置设置进行编辑。
尼坡(Nilpo)'17

4

我倾向于使用这种方法

$errorlevel=error_reporting();
$errorlevel=error_reporting($errorlevel & ~E_DEPRECATED);

这样,我不会意外关闭我需要的东西


1
这样可以减少您的控制。您假设当前配置的任何内容都是正确的。最好根据需要直接设置它,以免出现重叠的配置。
尼坡(Nilpo)'17

理解。每种情况都是不同的。
realtebo

1
但是,这是最好的答案。这是直接回答问题的唯一方法:仅禁用E_DEPRECATED,而没有任何副作用。
Sygmoral

-2

更改php版本时会发生此错误:抑制此错误消息非常简单

要取消显示DEPRECATED错误消息,只需将以下代码添加到index.php文件中:

init_set('display_errors',False);


不要这样做,这会隐藏所有错误消息,不仅是折旧。
tanaydin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.