PHP 已弃用的错误不会在 WordPress 仪表板上消失

PHP Deprecated errors won't disappear on WordPress Dashboard

提问人:mynameisdev 提问时间:5/23/2012 最后编辑:Communitymynameisdev 更新时间:10/11/2012 访问量:5079

问:

TL的;DR :在我们的服务器上升级了 PHP,这导致 WordPress 中出现一堆已弃用的错误,尝试了一些修复程序,但错误不会消失。

PHP版本:5.3.10 WordPress版本:3.3.2

我有一个 WordPress 安装,现在已经启动并运行了一段时间,没有任何抱怨。

本周,我们将服务器上的 PHP 升级到 5.3.10,更新后,WordPress 仪表板开始出现如下错误:

Deprecated: Assigning the return value of new by reference is deprecated in /home/random/public_html/wp-includes/class-simplepie.php on line 738

大量(我怀疑有 116 个)这样的错误(每个错误都在不同的行上)出现在

  • 传入链接
  • WordPress博客
  • 插件

正如 WordPress 论坛上的一些帖子所建议的那样,我在文件级别(通过添加 error_reporting(0);在wp-config.php和/或其他文件的顶部)和使用 PHP.ini 禁用了错误报告。Phpinfo 确认 error_reporting = 0。

这没有效果,警告仍然显示在仪表板上。

我尝试禁用所有插件并恢复到默认主题(注意依次启用每个插件,看看其中一个是否导致了问题),但错误继续出现。

接下来,我没有治疗症状,而是去看看是否可以解决问题的原因。

使用 Simplepie 获取已弃用的错误

不推荐使用按引用分配 new 的返回值

指出class-simplepie.php里面有一些过时的语法。

在我的文本编辑器中使用查找/替换,我交换了所有 166 个实例

=& new

= new

我仍然在仪表板上看到错误。

所以,据我所知,不应该有错误要报告,如果有,它们无论如何都不应该出现。

Wordpress 未在调试模式下运行。

我的phpinfo的粘贴可以在这里找到:http://pastebin.com/Pk68sDL1 它是否对任何人有用。

不知道接下来要尝试什么。任何提示非常感谢。

D

PHP WordPress 弃用了 错误报告 simplepie

评论

0赞 producerism 6/6/2012
有同样的问题 - 网上提出的其他解决方案似乎都没有任何区别。期待任何解决方案。

答:

-1赞 Brian 5/23/2012 #1

将其添加到wp-config.php文件的顶部,紧跟在第一个文件之后

error_reporting(0);

评论

0赞 mynameisdev 5/23/2012
事实上,已经尝试过这个,error_reporting(0);直到我的wp-config.php文件的顶部。这没什么区别。
1赞 Justin F 6/6/2012 #2

我今天遇到了完全相同的问题,我也尝试了您列出的所有解决方案。最终我意识到,在我更换后

=& new

= new

在 class-simplepie.php 中,我还需要在仪表板中重新加载模块。当您只是刷新浏览器页面,甚至隐藏模块然后再次显示它时,这似乎不会发生。

因此,我在仪表板上突出显示了“传入链接”模块,然后单击“配置”。我将 RSS 提要 URL 更改为其他任何内容 (google.com),点击提交,它起作用了。刷新了该模块,不再出现class-simplepie.php中已弃用的错误。对 Wordpress 博客模块做了同样的事情,这也奏效了。

我唯一想不通的是如何刷新插件模块。它没有“配置”选项,我无法让它像其他人一样重新加载。

编辑:插件模块现在也可以使用。只是需要时间重置。

0赞 MojitoJoe 6/20/2012 #3

我也有这些警告。我偶然发现了 simplepie 开发人员的一条消息,说这发生在 PHP5.3+ 上,并且与 PHP4 的兼容性有关。使用 simplepie v1.3-dev 会降低这种向下的兼容性并修复它。

GitHub 下载

3赞 Micha 7/16/2012 #4

试试这个,你不会有这个错误:

error_reporting(0);
ini_set("display_errors", "off");
ini_set("display_startup_errors", "off");

或者在服务器的 php.ini 文件中设置相同的指令。