让WP CLI在JSON输出中隐藏调试警告和通知,设置与网站相同

时间:2021-06-03 作者:Thomas Ebert

Summary: WP CLI可用于获取站点上安装的所有插件的JSON输出,但输出会由于警告而损坏,尽管日志级别设置为低。

问题

不幸的是,我有一个网站运行了一个过时的插件,产生了一些警告。他们是not 在网站上显示为WP_DEBUG 设置为false 在里面wp-config.php. 网站运行良好,因为没有致命错误。WP-CLI也会生成正确的JSON结果,但在所有输出之前都有一个特定的警告。实际上,这是两次相同的警告,第一次是用PHP Warning:.

我正在运行的命令

wp plugin list --fields=name,status,update,version,update_version,title --format=json
电流输出

PHP Warning:  Declaration of aec_contributor_list::form() should be compatible with WP_Widget::form($instance) in /sites/[redacted]/files/wp-content/plugins/ajax-event-calendar/inc/widget-contributors.php on line 61
Warning: Declaration of aec_contributor_list::form() should be compatible with WP_Widget::form($instance) in /sites/[redacted]/files/wp-content/plugins/ajax-event-calendar/inc/widget-contributors.php on line 61
[{...JSON omitted for brevity...}]
这是我的wp --info

OS: Linux 4.15.0-143-generic #147-Ubuntu SMP Wed Apr 14 16:10:11 UTC 2021 x86_64
Shell:  /bin/bash
PHP binary: /usr/bin/php7.4
PHP version:    7.4.3
php.ini used:   /etc/php/7.4/cli/php.ini
MySQL binary:   /usr/bin/mysql
MySQL version:  mysql  Ver 14.14 Distrib 5.7.34, for Linux (x86_64) using  EditLine wrapper
SQL modes:  
WP-CLI root dir:    phar://wp-cli.phar/vendor/wp-cli/wp-cli
WP-CLI vendor dir:  phar://wp-cli.phar/vendor
WP_CLI phar path:   /sites/[redacted]/files
WP-CLI packages dir:    
WP-CLI global config:   /sites/[redacted]/.wp-cli/config.yml
WP-CLI project config:  
WP-CLI version: 2.5.0
尝试解决方案我读到

  • PHP warning are displaying when using WP CLI
  • wp-cli displays php notices when display errors off/etc/php/7.4/cli/php.ini.

    • error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT -&燃气轮机;error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
    • log_errors = On -&燃气轮机;log_errors = Off
    但这只删除了警告的第一个实例,因此现在的输出如下所示:

    Warning: Declaration of aec_contributor_list::form() should be compatible with WP_Widget::form($instance) in /sites/[redacted]/files/wp-content/plugins/ajax-event-calendar/inc/widget-contributors.php on line 61
    [{...JSON omitted for brevity...}]
    
    问题我不知道我还能去哪里看,我真的很想知道为什么不可能将相同的错误报告级别应用到已经应用到网站本身的WP CLI?

    我知道我可以简单地修复插件中的错误,或者尝试消除它(因为它可能也不再安全了…)。但为了知道这个问题的解决方案,如果将来再次发生这种情况,我很高兴听到任何想法。

1 个回复
SO网友:vlood

一种快速的手动解决方案是将所有错误输出定向到某个地方的日志文件,甚至定向到/dev/null。

您的命令如下所示:

wp plugin list --fields=name,status,update,version,update_version,title --format=json 2> ./cli-command.err.log

如果您完全不关心错误、警告和通知,可以将其发送到/dev/null,如下所示:

wp plugin list --fields=name,status,update,version,update_version,title --format=json 2> /dev/null

话虽如此,您仍然收到警告的插件很有可能实际使用了与错误流不同的内容。如果ajax-event-calendar 正在使用echo而不是error\\u log,但没有什么比修补插件并通知其作者更好的解决方案了。

相关推荐

使用WP-CLI和/或Search-Replace-DB迁移多站点

我有一个Wordpress 5.5/PHP7.3多站点生产站点安装,我正在尝试将其迁移到本地LAMP开发环境,以便进行编辑。The Problem: 就是在运行Search Replace DB脚本或WP Cli多站点迁移脚本时。一个子网站完美地加载到新的开发域上,同时主网站和具有相同主题的子网站成功加载,但主题似乎已中断(基于visual composer)。可能还有其他非视觉错误。我已经下载了所有文件,正确配置了LAMP virtualhost,并通过PHPMYADMIN将数据库导入到我的本地LAMP