wp-cli 0.14.1 MySQLエラー


8

今日wp-cli 0.14.1に更新しましたが、もう一度MySQLの問題が発生しました。私はWindows、Wampserver、およびCygwinを使用しています。

私が最後のリビジョン(0.14.0)に初めて更新したとき、同様の問題があり、GitHub ディスカッションからの情報を見つけて使用しました。これは、php.iniの「variables_order」が原因である可能性が高いと考えています。GPCSではなくEGPCSのデフォルトを強制するために、iniファイルでコメントアウトしました。それはそれを大事にしました。次のリリースでこれを修正することについての言及がありました。

ここで、0.14.1に更新し、「wp core config ....」を実行してwp-config.phpファイルを作成しようとすると、コマンドラインエラーが発生します。

MYSQL_PWD is not recognized as an internal or external command.

私はgithubスレッドに戻り、scribuが議論された変更を行ったことを確認しました。私はそれへのリンクをたどって、それがいくつかの光を当てるかどうかを見ました。328行目で変更を確認しましたが、その変更が問題を引き起こしているように見えるため、今何を試すべきかわかりません。

参考までに:DOSまたはCygwinコマンドラインからmysqlを使用しても問題はありません。どちらも同じ実行可能ファイルを参照し、正しく動作します。完璧に。

任意の助けいただければ幸いです。

2014年3月8日更新

注:(1)ユーザー名またはパスワードは一時的なものであり、これは私のローカルマシンの1つにあるため、公開する必要はありません。(2)このデバッグセッションでpharファイルを使用していることがわかります。binフォルダーにある「インストール済み」バージョンの「wp」を使用しても、まったく同じことが起こります。

これは、このwp-cliコマンドで開始したPHPStormのデバッグセッションです。

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_

utils.phpのブレークポイントは、331行目に設定されています。

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

実行のために333行に渡される最後のコマンドを作成します。

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

これは、行334〜339を処理してwp-cliを終了し、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
$ 

wp-cliはよく構築されたソフトウェアであることを知っているので、途中で何かが足りない可能性が高いです。(コマンドラインとPHPStormを一緒に動作させることは、私にとって新しいツールであるため、時間のかかる作業でした。)時間が許す限りそれを続けますが、手掛かりがあればそれが役立つでしょう。

更新:03/29/14

チケットをありがとうとscribuをマージしますが、残念ながら問題は解決しません。同じエラーが発生します。

最初に、pharファイルを再ダウンロードした後、チケットとマージの前とまったく同じコードを見つけたので混乱しました。WTFの瞬間。したがって、GitHubのビルドディレクトリを確認したところ、マージの2日前にファイルの日付が付けられているため、変更が含まれていなかったはずです。

私は毎晩つかみ、プロジェクトをリロードし、putenv()で変更がありましたが、Bashは以前と同じエラーをスローします。

以来、それはそうです、この変更 WP-CLIはCygwinのと互換性がありませんでした。

更新:2014年4月19日

バージョン0.15.0は4/15にリリースされたので、インストールして上記のすべてのコマンドを実行しました。wp-cliは、0.14.1より前のバージョンと同様に機能しました。0.14.1と0.15.0を比較したところ、次のことがわかりました。

v0.14.1の326〜339行目は次のとおりです。

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

v0.15.0の326〜342行目が次のようになりました。

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

これで問題が解決しました。wp-cliがCygwinで再び動作するようになりました。少なくとも、ここで使用したコマンドだけでなく、このポイントを通過することに依存しているいくつかのコマンド(インストール)も同様です。

回答:


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.