我今天刚刚更新到wp cli 0.14.1,再次遇到MySQL问题。我在Windows、Wampserver和Cygwin上。
当我第一次更新到最新版本(0.14.0)时,我也遇到了类似的问题,最终找到并使用了github discussion 这很可能是由于php中的“variables\\u order”。ini。我在ini文件中对此进行了注释,以强制默认使用EGPC而不是GPCS。这就解决了问题。在下一版本中提到了修复此问题。
现在我已经更新到0.14.1,并且在尝试运行“wp core config…”时创建wp配置。php文件我收到命令行错误
MYSQL_PWD is not recognized as an internal or external command.
我回到github线程,看到scribu确实进行了讨论中的更改。我跟着
link to it 看看它是否能提供一些线索。我在第328行看到了变化,但不知道我现在应该尝试什么,因为这种变化似乎是造成我问题的原因。
仅供参考:我在DOS或Cygwin命令行中使用mysql没有问题,它们都引用相同的可执行文件,并且工作正常;完美无瑕。
任何帮助都将不胜感激。
2014年8月3日更新
注意:(1)我不想公开用户名或密码,因为它们是临时的,这是在我的一台本地计算机上。(2) 您将看到我在这个调试会话中使用的是phar文件。使用bin文件夹中的“installed”版本“wp”也会发生同样的情况。
下面是PHPStorm中的一个调试会话,在该会话中,我使用以下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_
UTIL中的断点。为第331行设置了php:
$final_cmd = $cmd . assoc_args_to_str( $assoc_args );
这将创建交给第333行执行的最终命令:
$proc = proc_open( $final_cmd, $descriptors, $pipes );
这是
debugging image 在处理第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协同工作非常耗时,因为这对我来说是一个新工具。)如果时间允许的话,我会坚持下去,但如果有人有任何线索,这会有所帮助。
更新日期:2014年3月29日
谢谢你的票和合并scribu,但不幸的是,它并没有解决问题。我也犯了同样的错误。
起初,我在重新下载phar文件后感到困惑,因为我找到了与您的ticket和merge之前完全相同的代码。WTF时刻。因此,我查看了GitHub上的builds目录,发现该文件的日期是合并前2天,因此它不会包含更改。
我抓取了晚上的文件,重新加载了项目,putenv()有了变化,但Bash抛出了与之前相同的错误。
似乎从那以后this change wp cli与Cygwin不兼容。
更新日期:2014年4月19日
版本0.15.0于2015年4月发布,所以我安装了它并运行了上面的所有命令。wp cli与版本中的一样工作<;0.14.1。我将0.14.1与0.15.0进行了比较,得出以下结论。
v0的326-339线。14.1阅读:
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中的管线326-342。15.0现在改为:
$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,至少是我在这里使用的命令,还有一些依赖于通过这一点的命令-安装。