使用 PHP 5.4 禁用 WordPress 3.7 中的严格标准错误


Disabling Strict Standards Errors in WordPress 3.7 with PHP 5.4

将计算机更新到OS X 10.9后,我正在尝试通过我的php.ini文件在WordPress 3.7中禁用STRICT错误报告。我正在运行PHP版本5.4.17,这是Mavericks附带的版本。

在我的 wp-config.php 文件中,我已经启用了define('WP_DEBUG', true);在升级我的操作系统之前工作正常,因此,PHP 也是如此。

在 php.ini 文件中,我尝试将error_reporting设置为:

error_reporting = E_ALL

error_reporting = E_ALL & ~E_STRICT

error_reporting = E_ALL & ~E_DEPRECATED

甚至

error_reporting = 0

但是错误仍然出现。

display_errors设置为"关":

display_errors = Off

每次更改文件后,我都会使用这两个命令重新启动 apache 和 httpd:

httpd -k restart
apachectl restart

我正在编辑的 php.ini 文件与 phpinfo() 中指向的文件相同,为了确保更改正在进行,我一直在编辑error_prepend_string值:

error_prepend_string = "<span style='color: #ff0000'>ERROR: "

这些变化正在错误中发生。

关于如何调试的任何想法将不胜感激。

在 Wordpress 3.7 中,函数 wp_debug_mode (在 wp-includes/load.php 中定义,并从 wp-setings.php 调用)设置error_reporting( E_ALL )

由于wp-settings.php本身是在wp-config.php末尾加载的,因此您无法从wp-config.php更改此设置(或者更确切地说,您可以,但它将被覆盖)。

一种解决方案是创建一个"必须使用插件",即位于/wp-content/mu-plugins/文件夹中的.php文件,其中包含:

<?php
if (WP_DEBUG && WP_DEBUG_DISPLAY) 
{
   ini_set('error_reporting', E_ALL & ~E_STRICT & ~E_DEPRECATED);
}

我发现只有

error_reporting = off

有效,因为从 PHP 5.4 开始,STRICT 错误已成为 ALL 的一部分,这很烦人。

如果在wp-config.php文件中将WP_DEBUG设置为"false"。这些不会影响您的网站。

机器人 问题是上述有时不起作用。这可能发生在强制显示PHP错误,警告和通知的廉价/共享主机上。在这种情况下,您可以从 wp-config.php 文件中删除此行:

define('WP_DEBUG', false);

并放置这个:

ini_set('log_errors','On');
ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

就我而言,它可以工作。