当显示错误关闭时,wp-cli显示php通知

时间:2013-05-21 作者:Chris Muench

我使用的是wp cli,在运行wp export时会出现php通知和错误。其中一些警告和错误最终会出现在输出文件中。如何强制错误不显示。我试过了ini_set(\'display_errors\', 0);error_reporting(0); 在wp wp配置中。php

root@roc-apache-4:/var/www/blogs/html# wp export --quiet=true --debug=false --url=http://blogs.democratandchronicle.com/fleet-feet-beat/ --dir=/root/wordpress_exports --file_item_count=100000000
PHP Notice:  date_default_timezone_set(): Timezone ID \'America/New York\' is invalid in phar:///usr/bin/wp/php/wp-cli.php(21) : eval()\'d code on line 16
PHP Notice:  Constant ABSPATH already defined in phar:///usr/bin/wp/php/wp-cli.php(21) : eval()\'d code on line 68
PHP Notice:  Undefined index: combineCommentCounts in /var/www/blogs/html/wp-content/plugins/facebook-comments-for-wordpress/facebook-comments.php on line 265

Notice: Undefined index: combineCommentCounts in /var/www/blogs/html/wp-content/plugins/facebook-comments-for-wordpress/facebook-comments.php on line 265
PHP Notice:  define() was called with an argument that is <strong>deprecated</strong> since version 3.0! The constant <code>VHOST</code> <strong>is deprecated</strong>. Use the boolean constant <code>SUBDOMAIN_INSTALL</code> in wp-config.php to enable a subdomain configuration. Use is_subdomain_install() to check whether a subdomain configuration is enabled. in /var/www/blogs/html/wp-includes/functions.php on line 3466

4 个回复
SO网友:kaiser

首先,您必须在php.ini 文件,除非the PHP ini directives 不要将其列为PHP_INI_ALL - 这是几乎与错误相关的定义的情况。

所以我假设你只是误读了一些东西wp_settings.php 而不是wp-config.php.

下一点是,WP-CLI可能在不同的情况下运行WP,而不加载某些内容,因此它可能被绕过。

设置一些php.ini 东西总是你的php。ini文件。如果你不能解决错误:去修复它们——这就是错误、警告和通知的用途。如果是插件导致的,请发送拉取请求并通知作者。

注意:如果您在终端/命令行中,您可以使用php --ini 列出您的php.ini 存储文件。某些操作系统支持不同的默认位置。有些包(如XDebug)在默认情况下有额外的位置。

实例php --ini Windows上的结果:

Configuration File (php.ini) Path: C:\\Windows
Loaded Configuration File:         C:\\dev\\php\\php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)
示例php --ini Ubuntu 12.04 LTS的结果:

Configuration File (php.ini) Path: /etc/php5/cli
Loaded Configuration File:         /etc/php5/cli/php.ini
Scan for additional .ini files in: /etc/php5/cli/conf.d
Additional .ini files parsed:      /etc/php5/cli/conf.d/05-opcache.ini,
/etc/php5/cli/conf.d/10-pdo.ini,
/etc/php5/cli/conf.d/20-curl.ini,
/etc/php5/cli/conf.d/20-gd.ini,
/etc/php5/cli/conf.d/20-json.ini,
/etc/php5/cli/conf.d/20-mysql.ini,
/etc/php5/cli/conf.d/20-mysqli.ini,
/etc/php5/cli/conf.d/20-pdo_mysql.ini,
/etc/php5/cli/conf.d/20-readline.ini,

SO网友:Tatsh

您可以使用--require= 参数包含一个文件,该文件设置错误报告级别以及是否显示错误。我在shell脚本中做了类似的操作:

# Suppress errors by including this generated file
echo "<?php error_reporting(0); @ini_set(\'display_errors\', 0);" > __pre.php

rc=0

for i in 905 1000 10001; do
    wp --quiet --no-color --user=admin --require=./__pre.php \\
        post update $i --post_status=draft \\
           || (rc=1 && break)
done

rm -f __pre.php
exit $rc
请注意./ 因为它不会默认为本地路径,而是使用PHP的include_path. 在这种情况下需要绕过它。

如果不抑制错误,任何PHP通知都将导致退出状态为非零。在我的情况下,这是不可取的,因为我希望在出现任何错误时立即停止循环。

SO网友:dovidev

可能有2个php。ini文件

  • /etc/php/7.0/cli/php.ini 这是为您的命令行界面(CLI)准备的/etc/php/7.0/apache2/php.ini 这是针对您的Web服务器的,在本例中为Apache2要更新命令行上报告的错误,请更新error_reporting 中的行cli/php.ini

    error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT
    

SO网友:Mickael Bertainchant

我禁用通知等的解决方案是了解wp是否配置。php是否通过cli调用。所以把这段代码放到wp config中。php

$sapi_type = php_sapi_name();
if ( $sapi_type == \'cli\' ) {
    define( \'WP_DEBUG\', false );
} else {
    define( \'WP_DEBUG\', true );
}

结束

相关推荐

如何在wp-cli中正确使用命令‘wp post create’?

我需要用这个命令创建一篇带有标题、内容和摘录的文章,正如实用工具文档中所描述的那样。你能给我举一个如何使用它的例子吗?我在谷歌的官方文档中也找不到。谢谢