erreur MySQL wp-cli 0.14.1


8

Je viens de passer à wp-cli 0.14.1 aujourd'hui et j'ai encore une fois un problème avec MySQL. Je suis sur Windows, Wampserver et Cygwin.

Lors de ma première mise à jour vers la dernière version (0.14.0), j'ai eu un problème similaire et j'ai fini par trouver et utiliser les informations d'une discussion github qui étaient probablement dues à "variables_order" dans php.ini. J'ai commenté cela dans mon fichier ini afin de forcer la valeur par défaut d'EGPCS au lieu de GPCS. Cela s'en est occupé. Il a été question de corriger cela dans la prochaine version.

Maintenant, j'ai mis à jour à 0.14.1 et lorsque j'essaie d'exécuter "wp core config ...." pour créer le fichier wp-config.php, j'obtiens l'erreur de ligne de commande

MYSQL_PWD is not recognized as an internal or external command.

Je suis retourné au fil github et j'ai vu que scribu avait fait le changement discuté. J'ai suivi le lien vers celui-ci pour voir si cela pourrait faire la lumière. Je vois le changement à la ligne 328 mais je ne sais pas ce que je dois essayer maintenant car ce changement semble être à l'origine de mon problème.

Juste pour info: je n'ai aucun problème à utiliser mysql à partir de la ligne de commande DOS ou Cygwin, ils font tous deux référence au même exécutable et fonctionnent correctement; parfaitement.

Toute aide serait appréciée.

MISE À JOUR 03/08/2014

REMARQUES: (1) Je ne m'inquiète pas d'exposer le nom d'utilisateur ou le mot de passe car ils sont temporaires et c'est sur une de mes machines locales. (2) Vous verrez que j'utilise le fichier phar dans cette session de débogage. La même chose se produit exactement en utilisant la version "installée" "wp" dans le dossier bin.

Voici une session de débogage dans PHPStorm dans laquelle j'ai commencé avec cette commande wp-cli:

Boss@Bonkers /cygdrive/c/wamp/www/wpsandbox
$ ../wp-cli-0.14.1.phar core config --dbhost=127.0.0.1 --dbname=wpsandbox --dbuser=root --dbpass=Bonkers --dbprefix=sndbx_

Des points d'arrêt dans utils.php ont été définis pour la ligne 331:

$final_cmd = $cmd . assoc_args_to_str( $assoc_args );

ce qui crée la commande finale remise à la ligne 333 pour exécution:

$proc = proc_open( $final_cmd, $descriptors, $pipes );

Voici l' image de débogage avec le statut des variables juste avant de traiter les lignes 334-339 pour quitter wp-cli et produire le message d'échec sur la ligne de commande bash:

Boss@Bonkers /cygdrive/c/wamp/www/wpsandbox
$ ../wp-cli-0.14.1.phar core config --dbhost=127.0.0.1 --dbname=wpsandbox --dbuser=root --dbpass=Bonkers --dbprefix=sndbx_
'MYSQL_PWD' is not recognized as an internal or external command,
operable program or batch file.

Boss@Bonkers /cygdrive/c/wamp/www/wpsandbox
$ 

Je sais que wp-cli est un logiciel bien construit, il est donc très probable que je manque quelque chose en cours de route. (Faire fonctionner la ligne de commande et PHPStorm prenait du temps car c'est un nouvel outil pour moi.) Je vais y rester si le temps le permet, mais si quelqu'un a des indices, cela aiderait.

MISE À JOUR: 29/03/14

Merci pour le ticket et la fusion de scribu, mais malheureusement cela ne résout pas le problème. Je reçois la même erreur.

Au début, j'étais confus après avoir re-téléchargé le fichier phar car j'ai trouvé exactement le même code qu'avant votre ticket et fusionner. Un moment WTF. J'ai donc regardé le répertoire builds sur GitHub et j'ai vu que le fichier est daté de 2 jours avant votre fusion, donc il n'aurait pas inclus les modifications.

J'ai saisi la nuit, rechargé le projet et il y a eu les changements avec putenv () mais Bash lance la même erreur qu'auparavant.

Il semble que ce changement wp-cli soit incompatible avec Cygwin.

MISE À JOUR: 19/04/2014

La version 0.15.0 a été publiée le 4/15, je l'ai donc installée et exécuté toutes les commandes ci-dessus. wp-cli a fonctionné comme dans les versions <0.14.1. J'ai comparé 0.14.1 à 0.15.0 et j'ai trouvé ce qui suit.

Les lignes 326 à 339 de la v0.14.1 se lisent comme suit:

if ( isset( $assoc_args['pass'] ) ) {
    $cmd = esc_cmd( 'MYSQL_PWD=%s ', $assoc_args['pass'] ) . $cmd;
    unset( $assoc_args['pass'] );
}

$final_cmd = $cmd . assoc_args_to_str( $assoc_args );

$proc = proc_open( $final_cmd, $descriptors, $pipes );
if ( !$proc )
    exit(1);

$r = proc_close( $proc );

if ( $r ) exit( $r );

Les lignes 326-342 de la v0.15.0 se lisent maintenant:

$pass = $assoc_args['pass'];
unset( $assoc_args['pass'] );

$old_pass = getenv( 'MYSQL_PWD' );
putenv( 'MYSQL_PWD=' . $pass );

$final_cmd = $cmd . assoc_args_to_str( $assoc_args );

$proc = proc_open( $final_cmd, $descriptors, $pipes );
if ( !$proc )
    exit(1);

$r = proc_close( $proc );

putenv( 'MYSQL_PWD=' . $old_pass );

if ( $r ) exit( $r );

Cela a résolu le problème. wp-cli fonctionne maintenant à nouveau avec Cygwin, au moins les commandes que j'ai utilisées ici ainsi que quelques autres qui reposaient sur le dépassement de ce point - l'installation.

Réponses:


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.