web-dev-qa-db-ja.com

wp-cliはエラーが表示されたときにphpの通知を表示します

私はwp-cliを使用していて、wp-exportを実行するとphpの通知とエラーが表示されます。これらの警告やエラーのいくつかは、出力ファイルに入っています。エラーが表示されないようにするにはどうすればよいですか。 wp-wp-config.phpでini_set('display_errors', 0);error_reporting(0);を試しました

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
3
Chris Muench

最初に、 PHP iniディレクティブ が_ php.iniとしてリストされていない限り、PHPエラー設定をPHP_INI_ALLファイルで行う必要があります。ほぼエラー関連の定義.

だから私はあなたがただ何かを誤って読み、wp_settings.phpの代わりにwp-config.phpにものを設定すると仮定します。

次の点は、WP CLI おそらく いくつかのものをロードせずにWPを実行すると、バイパスされる可能性があることです。

いくつかのphp.iniのものを設定する最も安全な方法は、常にあなたのphp.iniファイルです。そして、エラーを回避できない場合は、エラーを回避して修正してください。エラー、警告、および通知が対象となります。原因となっているプラ​​グインの場合は、プルリクエストを送信して作者に通知してください。


注:ターミナル/コマンドラインを使用している場合は、php --iniを使用して、php.iniファイルが保存されているすべての場所を一覧表示できます。一部のオペレーティングシステムは、デフォルトごとに異なる場所をサポートしています。そしてXDebugのようないくつかのパッケージはデフォルトで追加の場所を持っています。

Windowsでのphp --iniの結果の例:

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)

Ubuntu 12.04 LTSでのphp --iniの結果の例:

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,
3
kaiser

2つのphp.iniファイルがあります

  • /etc/php/7.0/cli/php.iniこれはあなたのコマンドラインインターフェース(CLI)用です
  • /etc/php/7.0/Apache2/php.iniこれはあなたのWebサーバのためのもので、この場合Apache2です。

コマンドラインで報告されたエラーを更新するには、error_reportingcli/php.ini行を更新します。

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

--require=引数を使用して、エラー報告レベルとエラーを表示するかどうかを設定するファイルを含めることができます。私はシェルスクリプトでこれに似たことをしました:

# 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を使用するため、注意してください。この場合はそれを回避する必要があります。

エラーを抑制しない場合は、 any PHP noticeで終了ステータスが0以外になります。 real エラーが発生したらすぐにループを停止させたいので、私の場合は望ましくありません。

0
Tatsh