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

时间:2013-10-25 01:32:18

标签: php wordpress apache httpd.conf osx-mavericks

我尝试在将计算机更新到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设置为Off:

display_errors = Off

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

httpd -k restart
apachectl restart

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

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

并且错误中会发生这些变化。

对于如何调试这一点的任何想法都将非常感激。

3 个答案:

答案 0 :(得分:18)

在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);
}

答案 1 :(得分:0)

我发现只有

error_reporting = off

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

答案 2 :(得分:0)

如果在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);

在我的情况下,它的工作。