web-dev-qa-db-fra.com

wp-cli affiche les avis php quand les erreurs d'affichage sont désactivées

J'utilise wp-cli et j'ai des avis php et des erreurs qui apparaissent lors de l'exécution de wp-export. Certains de ces avertissements et erreurs se retrouvent dans le fichier de sortie. Comment puis-je forcer les erreurs à ne pas apparaître. J'ai essayé ini_set('display_errors', 0); et error_reporting(0); dans wp-wp-config.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
3
Chris Muench

Tout d’abord, vous devez définir vos paramètres d’erreur PHP dans votre fichier php.ini à moins que les directives PHP ini ne l’indiquez pas sous la forme PHP_INI_ALL - ce qui est le cas pour presque erreur définition associée.

Donc, je suppose que vous venez de mal interpréter quelque chose et que vous définissez les éléments comme suit: wp_settings.php au lieu de wp-config.php.

Le point suivant est que WP CLI pourrait exécuter WP dans différents cas, sans chargement de matériel, ce qui pourrait le contourner.

Le point le plus sûr pour définir certaines informations php.ini est toujours votre fichier php.ini. Et si vous ne pouvez pas contourner les erreurs: allez-y et corrigez-les, c’est à cela que servent les erreurs, les avertissements et les avis. Si c'est un plugin qui en est la cause, envoyez une demande d'extraction et informez l'auteur.


Remarque: Si vous vous trouvez dans/sur votre terminal/ligne de commande, vous pouvez utiliser php --ini pour répertorier tous les emplacements dans lesquels vos fichiers php.ini sont stockés. Certains systèmes d'exploitation prennent en charge différents emplacements par défaut. Et certains paquets comme XDebug ont des emplacements supplémentaires par défaut.

Exemple php --ini résultat sous 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)

Exemple php --ini résultat sur 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,
3
kaiser

Il y a probablement 2 fichiers php.ini

  • /etc/php/7.0/cli/php.iniCeci est destiné à votre interface de ligne de commande (CLI)
  • /etc/php/7.0/Apache2/php.iniCeci est pour votre serveur Web, dans ce cas Apache2

Pour mettre à jour les erreurs signalées sur la ligne de commande, mettez à jour la ligne error_reporting dans le cli/php.ini

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

Vous pouvez utiliser l'argument --require= pour inclure un fichier définissant le niveau de rapport d'erreur et indiquant s'il faut ou non afficher les erreurs. J'ai fait quelque chose de similaire à cela dans un script 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

Notez le ./ car il ne sera pas défini par défaut sur le chemin local mais utilisera le include_path de PHP. Besoin de contourner cela dans ce cas.

Si vous ne supprimez pas les erreurs, la notification any PHP provoquera un statut de sortie non nul. Ce n'est pas souhaitable dans mon cas car je veux que la boucle s'arrête dès qu'une erreur real se produit.

0
Tatsh