Summary: WP CLI can be used to get a JSON output of all the plugins installed on a site, but the output gets corrupted due to warnings although log levels are set to low.
Problem
Unfortunately, I have a site that runs an outdated plugin producing some warnings. They are not shown on the website, as WP_DEBUG
is set to false
in wp-config.php
. The website runs fine, because there are no fatal errors. WP CLI produces the correct JSON results, too, but prepends all output with a particular warning. Actually it's the same warning twice, the first instance being prepended with PHP Warning:
.
The command I'm running
wp plugin list --fields=name,status,update,version,update_version,title --format=json
Current output
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...}]
This is my 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
Attempts at a solution
I read
And following that, I changed two settings in /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
But this only got rid of the first instance of the warning, so that the output looks like this now:
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...}]
Question
I have no idea where else I could look and I'm truly wondering why it seems impossible to apply the same error reporting levels to WP CLI that are already being applied to the website itself?
I am aware that I can simply fix the error in the plugin or try to get rid of it (since it probably isn't secure anymore either...). But just for the sake of knowing a solution to this issue, should it happen again in the future, I'm happy to hear any thoughts.