禁用来自debug.log的WordPress“PHP Deprecated:“消息

um6iljoc  于 2023-11-17  发布在  WordPress
关注(0)|答案(1)|浏览(94)

我已经搜索和尝试了各种解决这个问题的方法,没有一个有效。
看起来WordPress忽略了以下内容并记录了已弃用的消息:

error_reporting(E_ALL ^ E_DEPRECATED);
ini_set('error_reporting', E_ALL ^ E_DEPRECATED);

字符串
我的php.ini文件

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT


我的wp-config.php

<?php
define( 'WP_CACHE', true );
error_reporting(E_ALL ^ E_DEPRECATED);

...

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);


插件正在向我的debug.log文件发送带有PHP Deprecated: ...日志消息的垃圾邮件。每天生成几GB。使debug.log无法使用。
我向插件开发者报告,但有些插件没有及时修复。我不能自己修复,因为插件更新会覆盖我的更改。
禁用这些功能的解决方案是什么?

服务器:

  • 在AWS Lightsail上运行Bitnami/WordPress(2GB 2 vcpu)
  • Linux 5.10.0-25-云计算-amd 64 x86_64
  • PHPver.8.2.10
7vux5j2d

7vux5j2d1#

更新

我已经创建了一个WordPress plugin来添加,删除和控制从您的管理面板舒适的MU插件。

原文

无论您在wp-config.php中为error_reporting()设置了什么,也无论php.ini中有什么,它都会被function wp_debug_mode()中的WordPress覆盖(在wp-settings.php中调用wp-includes/load.php),如下所示:

if ( WP_DEBUG ) {
    error_reporting( E_ALL );
    //...
} else {
    error_reporting( E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR );
}

字符串
当然,你可以在wp-includes/load.php内部将E_ALL更改为E_ALL ^ E_DEPRECATED,但这(最终)将被WordPress更新覆盖。
另一个(持久)选项是使用must use plugin重置error_reporting(再次)。然而,这不会静音WordPress核心导致的弃用警告。无论如何,如果wp-content/mu-plugins不存在,请创建目录wp-content/mu-plugins。在该目录中添加__error_reporting.php,内容如下:

<?php
error_reporting(E_ALL ^ E_DEPRECATED);


必须使用的插件将按字母顺序加载在所有其他插件之前(因此前缀为__)。

相关问题