【问题标题】:Disabling Strict Standards Errors in WordPress 3.7 with PHP 5.4使用 PHP 5.4 禁用 WordPress 3.7 中的严格标准错误
【发布时间】:2013-11-03 23:15:57
【问题描述】:

在将计算机更新到 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: "

而这些变化是在错误中体现出来的。

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

【问题讨论】:

  • phpinfo()里面error_reporting的值是什么?
  • phpinfo() 还将在 Core 部分显示 error_reportingdisplay_errors 的实际本地和主运行时值,请分享它们显示的内容。
  • @Jack 本地值是“32767”。 主值是“没有价值”。
  • 我认为它.. error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT 如果我没记错的话
  • 另外,error_reporting(0); 在 php.ini 中当然不能工作,应该是 error_reporting = 0。但是32767 肯定包括 E_STRICT (2048)。要么你没有编辑正确的 php 配置文件,要么你的代码在 phpinfo() 调用之前的某个地方重置了值。

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


【解决方案1】:

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

【讨论】:

  • 这部分工作,因为在functions.php被加载之前发生了一些错误。但是为这个想法+1 :)
  • 我在我的(有限)测试中没有看到任何错误,但我想它可能在加载插件时发生。查看Wordpress load order,也许一个解决方案是创建一个非常简单的插件来设置error_reporting,确保它在任何其他插件之前加载(默认情况下它们按字母顺序加载)。
  • 为获得最佳效果,请使用 adelval 提供的解决方案,但将其放在 .php 文件中,例如:/wp-content/mu-plugins/errorreporting.php。 “mu”代表“必须使用”,将在主题和插件之前加载,但在设置错误报告之后。您也不必激活它,因为它们是“必须使用的”。
  • 感谢@Alexandre 的编辑,它通过合并 RadGH 的评论改进了答案
  • 这对我也没有帮助,因为已弃用的错误消息甚至在它到达 mu-plugin 之前就已完成。就我而言,问题出在 wp-db.php 中,错误是:已弃用:mysql_connect()
【解决方案2】:

我发现只有

error_reporting = off

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

【讨论】:

    【解决方案3】:

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

    Bot 的问题是上面有时不起作用。 这可能发生在强制显示 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);
    

    在我的情况下它的工作。

    【讨论】:

      猜你喜欢
      • 2013-12-10
      • 2010-11-17
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-07
      • 2018-03-04
      • 2023-03-28
      • 2014-04-24
      相关资源
      最近更新 更多