wp-cli 0.14.1 Erro no MySQL

8

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.

user1640896
fonte

Respostas: