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. Eu estou no Windows, Wampserver e Cygwin.

Quando atualizei pela primeira vez para o último rev (0.14.0), tive um problema semelhante e acabei encontrando e usando as informações de um discussão do github que provavelmente foi devido ao" variables_order "no php.ini. Eu comentei isso no meu arquivo ini para forçar o padrão de EGPCS em vez de GPCS. Isso cuidou disso. Houve menção de corrigir isso no próximo lançamento.

Agora eu atualizei para o 0.14.1 e ao tentar executar o "wp core config ...." para criar o arquivo wp-config.php eu 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 ser discutida. Eu segui o link para ele para ver se ele lançaria alguma luz. Eu vejo a mudança na linha 328, mas não sei o que devo tentar agora, já que a mudança parece ser o que está produzindo o meu problema.

Apenas FYI: Eu não tenho nenhum problema usando o mysql da linha de comando DOS ou Cygwin, ambos fazem referência ao mesmo executável e funcionam corretamente; sem falhas.

Qualquer ajuda seria apreciada.

ATUALIZADO em 03/08/2014

NOTAS: (1) Não estou preocupado em expor o nome de usuário ou senha, pois eles são temporários e isso está em uma das minhas máquinas locais. (2) Você verá que estou usando o arquivo phar nesta sessão de depuração. A mesma coisa acontece com a versão "instalada" "wp" na pasta bin.

Aqui está uma sessão de depuração no PHPStorm em que comecei com este comando wp-cli:

[email protected] /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 configurados 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 antes das linhas de processamento 334-339 para sair do wp-cli e produzir a mensagem de falha na linha de comando do bash:

[email protected] /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.

[email protected] /cygdrive/c/wamp/www/wpsandbox
$ 

Eu sei que o wp-cli é um software bem construído, então é mais provável que eu esteja perdendo algo ao longo do caminho. (Conseguir que a linha de comando e o PHPStorm trabalhassem em conjunto consumia muito tempo, já que é uma ferramenta nova para mim.) Vou continuar conforme o tempo permitir, mas se alguém tiver alguma pista, isso ajudará.

ATUALIZAÇÃO: 29/03/14

Obrigado pelo ticket e merge scribu, mas infelizmente isso não resolve o problema. Estou recebendo o mesmo erro.

No começo eu estava confuso depois de voltar a baixar o arquivo phar porque eu encontrei exatamente o mesmo código de antes do seu ticket e mesclar. Um momento WTF. Então eu olhei para o diretório builds no GitHub e vi que o arquivo é datado 2 dias antes da sua fusão, então ele não teria incluído as mudanças.

Eu agarrei todas as noites, recarreguei o projeto e houve as mudanças com putenv (), mas Bash está jogando o mesmo erro de antes.

Parece que esta alteração wp-cli foi incompatível com o Cygwin.

ATUALIZAÇÃO: 19/04/2014

A versão 0.15.0 foi lançada em 4/15, então eu instalei e executei todos os comandos acima. O wp-cli funcionou como nas versões < 0.14.1. Eu comparei 0.14.1 a 0.15.0 e encontrei o seguinte.

As linhas 326-339 da v0.14.1 lêem:

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 a 344 na v0.15.0 agora são lidas:

$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 resolveu o problema. O wp-cli agora está trabalhando novamente com o Cygwin, pelo menos os comandos que eu usei aqui, bem como alguns outros que dependiam de passar desse ponto - a instalação.

    
por user1640896 28.02.2014 / 23:11

1 resposta

4

Parece que o Cygwin não suporta variáveis de ambiente in-line, como o Bash faz.

Um ticket aberto: enlace

    
por scribu 25.03.2014 / 20:39

Tags