Acabei de atualizar para o wp-cli 0.14.1 hoje e mais uma vez tendo um problema no MySQL. Estou no Windows, Wampserver e Cygwin.
Quando atualizei para a última rev (0.14.0), tive um problema semelhante e acabei encontrando e usando as informações de uma discussão no github que provavelmente eram devidas à "variável_ordem" no php.ini. Eu comentei isso no meu arquivo ini para forçar o padrão do EGPCS em vez do GPCS. Isso cuidou disso. Houve menção de corrigir isso no próximo lançamento.
Agora eu atualizei para 0.14.1 e ao tentar executar "wp core config ...." para criar o arquivo wp-config.php, estou recebendo o erro da linha de comando
MYSQL_PWD is not recognized as an internal or external command.
Voltei ao tópico do github e vi que o scribu fez a alteração discutida. Eu segui o link para ver se ele iria lançar alguma luz. Eu vejo a mudança na linha 328, mas não sei o que devo tentar agora, já que essa mudança parece estar causando o meu problema.
Apenas para sua informação: Não tenho problema em usar o mysql da linha de comando do DOS ou Cygwin, ambos referenciam o mesmo executável e funcionam corretamente; perfeitamente.
Qualquer ajuda seria apreciada.
ATUALIZADO 03/08/2014
OBSERVAÇÕES: (1) Não estou preocupado em expor o nome de usuário ou a senha, pois eles são temporários e estão em uma das minhas máquinas locais. (2) Você verá que estou usando o arquivo phar nesta sessão de depuração. O mesmo ocorre com a versão "instalada" "wp" na pasta bin.
Aqui está uma sessão de depuração no PHPStorm na qual iniciei com este comando 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_
Os pontos de interrupção em utils.php foram definidos para a linha 331:
$final_cmd = $cmd . assoc_args_to_str( $assoc_args );
que cria o comando final entregue à linha 333 para execução:
$proc = proc_open( $final_cmd, $descriptors, $pipes );
Aqui está a imagem de depuração com o status das variáveis imediatamente antes de processar as linhas 334-339 para sair do wp-cli e produzir a mensagem de falha na linha de comando do 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
$
Eu sei que o wp-cli é um software bem construído, então é provável que eu esteja perdendo alguma coisa ao longo do caminho. (Conseguir que a linha de comando e o PHPStorm funcionassem juntos consumia muito tempo, pois é uma nova ferramenta para mim.) Manterei isso o tempo que for necessário, mas se alguém tiver alguma pista, isso ajudaria.
ATUALIZAÇÃO: 29/03/14
Obrigado pelo ticket e mesclar scribu, mas infelizmente isso não resolve o problema. Estou recebendo o mesmo erro.
No começo, fiquei confuso depois de baixar novamente o arquivo phar porque encontrei exatamente o mesmo código de antes do seu tíquete e mesclagem. Um momento da WTF. Então, olhei para o diretório builds no GitHub e vi que o arquivo é datado 2 dias antes da sua mesclagem, para que não incluísse as alterações.
Eu peguei o noturno, recarreguei o projeto e houve as alterações com putenv (), mas o Bash está lançando o mesmo erro de antes.
Parece que, desde essa mudança, o wp-cli é incompatível com o Cygwin.
ATUALIZAÇÃO: 19/04/2014
A versão 0.15.0 foi lançada em 15/4, então eu a instalei e executei todos os comandos acima. O wp-cli funcionou como nas versões <0.14.1. Comparei 0.14.1 a 0.15.0 e encontrei o seguinte.
As linhas 326-339 da v0.14.1 leem:
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 );
As linhas 326-342 na v0.15.0 agora leem:
$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 );
Isso corrigiu o problema. O wp-cli agora está trabalhando novamente com o Cygwin, pelo menos os comandos que usei aqui e mais alguns que dependiam de superar esse ponto - a instalação.