我已经搜索并尝试了解决这个问题的各种解决方案,但没有一个有效。
看起来 WordPress 忽略了以下内容并记录了已弃用的消息:
error_reporting(E_ALL ^ E_DEPRECATED);
ini_set('error_reporting', E_ALL ^ E_DEPRECATED);
Run Code Online (Sandbox Code Playgroud)
我的php.ini:
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
Run Code Online (Sandbox Code Playgroud)
我的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);
Run Code Online (Sandbox Code Playgroud)
插件正在向我的debug.log文件发送PHP Deprecated: ...日志消息。每天生成数GB。使debug.log无法使用。
我向插件开发人员报告,但有些插件没有及时修复。我无法自行修复,因为插件更新会覆盖我的更改。
禁用这些的解决方案是什么?
服务器:
更新
我创建了一个WordPress 插件,可以从您舒适的管理面板添加、删除和控制 MU 插件。
原始帖子
无论您error_reporting()在 中设置什么wp-config.php,也无论 中的内容是什么,它都会被 WordPress 中(由调用)php.ini覆盖,如下所示:function wp_debug_mode()wp-includes/load.phpwp-settings.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 );
}
Run Code Online (Sandbox Code Playgroud)
当然,您可以更改E_ALL为E_ALL ^ E_DEPRECATEDinside wp-includes/load.php,但这(最终)将被 WordPress 更新覆盖。
另一个(持久)选项是使用 amust use plugin来重置error_reporting(再次)。然而,这不会消除 WordPress 核心产生的弃用警告。无论如何,wp-content/mu-plugins如果该目录不存在,请创建该目录。在该目录中添加__error_reporting.php以下内容:
<?php
error_reporting(E_ALL ^ E_DEPRECATED);
Run Code Online (Sandbox Code Playgroud)
必须使用的插件将在所有其他插件之前按字母顺序加载(因此有__前缀)。