【问题标题】:How can I stop PHP notices from appearing in wordpress?如何阻止 PHP 通知出现在 wordpress 中?
【发布时间】:2010-11-21 10:59:01
【问题描述】:

我知道error_reporting(0);ini_set('display_errors', false);,但是wordpress中出现了一个通知:

注意:/var/www/vhosts/treethink.net/subdomains/parkridge/httpdocs/wp-includes/formatting.php359 中的数组到字符串转换>

出现在 wordpress 中,而不出现在网站的任何其他页面中。

我检查了phpinfo(),一切都设置好了,不会显示错误。为什么这个还出现?

这是产生错误的行:

function wp_check_invalid_utf8( $string, $strip = false ) {
    $string = (string) $string;

确实在 wordpress 中改变了一些东西,以改变画廊的工作方式。但不是这个函数,我认为我也没有改变对这个函数的任何调用。除了出现的通知之外,一切似乎都运行得很好,我只需要隐藏这个错误。

【问题讨论】:

  • 您确定 wp 不会在某处更改 error_reporting 和 display_errors 的值吗?
  • 我是这么想的,但之前没有错误
  • 哦,我在网站上工作时设置的值,这样我可以更容易地查看是否有错误。

标签: php wordpress error-reporting


【解决方案1】:

大多数时候这些都没什么好担心的(尽管插件/主题开发人员应该知道这些,以便他们可以在未来的版本中修复它们)。大多数时候,生产站点上的 PHP 警告和通知无需担心。 其中一些甚至可以生成,因为开发人员必须保持与旧版本的 WordPress 以及旧的 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);

如果您只是在 wp-config.php 文件将 WP_DEBUG 设置为 false,您应该没问题。这些不会以任何方式影响您的网站。

但是,问题是有时上述方法不起作用。 在强制显示 PHP 警告和通知的廉价共享主机上,大多数情况下都会发生这种情况。 在这种情况下,您可以从 wp-config.php 文件中替换此行:

【讨论】:

    【解决方案2】:
    /**
     * For developers: WordPress debugging mode.
     *
     * Change this to true to enable the display of notices during development.
     * It is strongly recommended that plugin and theme developers use WP_DEBUG
     * in their development environments.
     */
    define('WP_DEBUG', false);
    
    // Enable Debug logging to the /wp-content/debug.log file
    define('WP_DEBUG_LOG', false);
    
    // Disable display of errors and warnings 
    define('WP_DEBUG_DISPLAY', false);
    @ini_set('display_errors', 0);
    

    我使用什么,它适用于最新的 WordPress 版本。

    【讨论】:

      【解决方案3】:

      2015 年 1 月使用最新的 Wordpress,以上都不适合我。

      在 Wordpress 的 mu-plugins 文件夹中创建一个 php 文件是可行的,例如:

      <?php
      error_reporting(E_ALL &  ~( E_NOTICE | E_USER_NOTICE | E_STRICT | 
      E_DEPRECATED | E_USER_DEPRECATED | E_WARNING | E_CORE_WARNING | 
      E_USER_WARNING | E_COMPILE_WARNING | E_PARSE )); 
      

      随便取个名字就行了……

      我从这里得到了答案:

      https://wycks.wordpress.com/2013/12/05/how-to-remove-error-notices-using-wordpresss-wp_debug/

      【讨论】:

      • 这实际上是最好的解决方案,因为它允许您使用 WP_DEBUG 和 WP_DEBUG_DISPLAY 但只隐藏 PHP 通知。其他解决方案要么不起作用,要么完全禁用所有调试输出
      • 小改动:对我来说,我只需要这一行:error_reporting(E_ALL & ~(E_NOTICE));
      • 创建了这个文件,在模板中出错了,页面显示了默认的损坏的网络消息,好像 WP_DEBUG 和 WP_DEBUG_DISPLAY 没有设置为 true.. 但它们是..:/ 当我删除脚本,通知和错误再次显示
      【解决方案4】:

      如果您只想隐藏来自此功能的错误,您可以使用

      @function wp_check_invalid_utf8( $string, $strip = false )
      {
      
      }
      

      【讨论】:

        【解决方案5】:

        在 wp-config.php 中添加这一行:

        define('WP_DEBUG_DISPLAY', false);
        

        这将启用或禁用在页面上显示通知和警告。这里有这个选项的更完整的描述,以及一些相关的选项:

        http://codex.wordpress.org/Debugging_in_WordPress

        【讨论】:

        • 这个对我有用——不过我需要把它放在 wp-config.php 的顶部。谢谢(^_^)*
        【解决方案6】:

        您需要编辑您的:

        wp-config.php
        

        在此处归档并修改以下内容:

        error_reporting(0);
        @ini_set('display_errors', 0);
        

        否则 Wordpress 会覆盖 PHP.INI 设置的 ALERTS

        【讨论】:

        • 为了对我有用,我必须在配置文件调用 wp-settings.php 后将这些行放在 wp-config 的底部。
        • 重要提示:使用当前的 WordPress 版本,这不再有效。当您启用 WP_DEBUG 时,WordPress 将覆盖 error_reporting 选项。该解决方案在今天(2015 年 9 月)stackoverflow.com/a/27997023/313501 有效
        • 此解决方案关闭所有错误不仅通知。 Eric Henry 的解决方案更好,它允许保留所有错误,仅抑制通知和警告。
        猜你喜欢
        • 2017-01-08
        • 1970-01-01
        • 1970-01-01
        • 2011-02-15
        • 1970-01-01
        • 1970-01-01
        • 2021-12-23
        • 1970-01-01
        • 2020-03-15
        相关资源
        最近更新 更多