wp-cli 0.14.1 MySQL-Fehler

8

Ich habe heute gerade auf wp-cli 0.14.1 aktualisiert und habe wieder ein MySQL-Problem. Ich bin unter Windows, Wampserver und Cygwin.

Als ich zum ersten Mal auf die letzte Version (0.14.0) aktualisiert habe, hatte ich ein ähnliches Problem und fand und verwendete die Informationen aus einer Github-Diskussion , die höchstwahrscheinlich auf die "variables_order" in php.ini zurückzuführen waren. Ich habe das in meiner INI-Datei auskommentiert, um die Standardeinstellung von EGPCS anstelle von GPCS zu erzwingen. Das hat sich darum gekümmert. In der nächsten Version wurde erwähnt, dass dies behoben werden soll.

Jetzt habe ich auf 0.14.1 aktualisiert und beim Versuch, "wp core config ...." auszuführen, um die Datei wp-config.php zu erstellen, wird der Befehlszeilenfehler angezeigt

MYSQL_PWD is not recognized as an internal or external command.

Ich ging zurück zum Github-Thread und sah, dass Scribu die besprochene Änderung vorgenommen hatte. Ich folgte dem Link, um zu sehen, ob es etwas Licht ins Dunkel bringen würde. Ich sehe die Änderung in Zeile 328, weiß aber nicht, was ich jetzt versuchen soll, da diese Änderung anscheinend mein Problem verursacht.

Nur zu Ihrer Information: Ich habe kein Problem damit, MySQL über die DOS- oder Cygwin-Befehlszeile zu verwenden. Beide verweisen auf dieselbe ausführbare Datei und funktionieren ordnungsgemäß. einwandfrei.

Jede Hilfe wäre dankbar.

AKTUALISIERT 03/08/2014

HINWEISE: (1) Es geht mir nicht darum, den Benutzernamen oder das Kennwort offenzulegen, da diese nur vorübergehend sind und sich auf einem meiner lokalen Computer befinden. (2) Sie werden sehen, dass ich die Phar-Datei in dieser Debug-Sitzung verwende. Genau das Gleiche passiert mit der "installierten" Version "wp" im Ordner "bin".

Hier ist eine Debug-Sitzung in PHPStorm, in der ich mit diesem Befehl wp-cli begonnen habe:

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_

Haltepunkte in utils.php wurden für Zeile 331 festgelegt:

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

Dadurch wird der letzte Befehl erstellt, der zur Ausführung an Zeile 333 übergeben wird:

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

Hier ist das Debugging-Image mit dem Status der Variablen unmittelbar vor der Verarbeitung der Zeilen 334-339, um wp-cli zu beenden und die Fehlermeldung in der Bash-Befehlszeile zu erzeugen:

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
$ 

Ich weiß, dass wp-cli eine gut konstruierte Software ist, daher fehlt mir höchstwahrscheinlich etwas auf dem Weg. (Es war zeitaufwändig, die Befehlszeile und PHPStorm zusammenzubringen, da es ein neues Tool für mich ist.) Ich werde mich daran halten, wenn es die Zeit erlaubt, aber wenn jemand irgendwelche Hinweise hat, würde es helfen.

UPDATE: 29.03.14

Vielen Dank für das Ticket und Merge Scribu, aber leider behebt es das Problem nicht. Ich erhalte den gleichen Fehler.

Zuerst war ich nach dem erneuten Herunterladen der Phar-Datei verwirrt, weil ich genau den gleichen Code wie vor Ihrem Ticket und Zusammenführen gefunden habe. Ein WTF-Moment. Also habe ich mir das Builds-Verzeichnis auf GitHub angesehen und festgestellt, dass die Datei 2 Tage vor Ihrer Zusammenführung datiert ist, sodass die Änderungen nicht enthalten wären.

Ich habe die Nacht gepackt, das Projekt neu geladen und es gab die Änderungen mit putenv (), aber Bash wirft den gleichen Fehler wie zuvor.

Es scheint, dass wp-cli seit dieser Änderung nicht mehr mit Cygwin kompatibel ist.

UPDATE: 19.04.2014

Die Version 0.15.0 wurde am 15.4. Veröffentlicht, also habe ich sie installiert und alle oben genannten Befehle ausgeführt. wp-cli funktionierte wie in Versionen <0.14.1. Ich verglich 0.14.1 mit 0.15.0 und fand folgendes.

Die Zeilen 326-339 von v0.14.1 lauten:

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 );

Die Zeilen 326-342 in Version 0.15.0 lauten jetzt:

$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 );

Dies hat das Problem behoben. wp-cli arbeitet jetzt wieder mit Cygwin, zumindest die Befehle, die ich hier verwendet habe, sowie einige weitere, die darauf beruhten, diesen Punkt zu überwinden - die Installation.

user1640896
quelle

Antworten: