WP cli --path parece não funcionar

4

O WP-cli parece não funcionar ao adicionar um --path param

me@host:~$ wp plugin status --path='/home/me/domains/example.com/public_html'
-bash: /home/me/domains/example.com/public_html: is a directory
Error: This does not seem to be a WordPress install.
Pass --path='path/to/wordpress' or run 'wp core download'.

Se eu cd para o dir e, em seguida, execute o comando sem o caminho que ele funciona.
Eu tenho wp-cli 0,25

Atualizar
Informações adicionais ao adicionar uma --debug flag

Debug (bootstrap): No readable global config found (0.031s)
Debug (bootstrap): No project config found (0.032s)
Debug (bootstrap): No package autoload found to load. (0.39s)
Debug (bootstrap): ABSPATH defined: /home/me/domains/example.com/public_html/ (0.39s)

Alguém tem idéia do que estou fazendo de errado?

    
por janw 27.10.2016 / 16:08

1 resposta

4

É como se você estivesse tentando executar:

wp plugin status --path=$(/home/me/domains/example.com/public_html)

porque o que está dentro dos backticks é avaliado.

Aqui está uma boa leitura sobre o uso de backticks no linha de comando.

Deixe-me citar @rozcietrzewiacz :

  

Backtick não é um sinal de citação , tem um   significado especial. Tudo o que você digita entre os backticks é avaliado   (executado) pelo shell antes do comando principal [...]

Alternativas:

wp plugin status --path=/home/me/domains/example.com/public_html
wp plugin status --path="/home/me/domains/example.com/public_html"
wp plugin status --path='/home/me/domains/example.com/public_html'

Quando uso a configuração wp-skeleton , tenho que apontar para a pasta wp/ core, não a pasta acima contendo o arquivo wp-config.php .

Atualização:

Dentro da classe Runner , temos:

/**
 * Do WordPress core files exist?
 *
 * @return bool
 */
private function wp_exists() {
    return is_readable( ABSPATH . 'wp-includes/version.php' );
}

e quando definimos ABSPATH com

--path=/home/me/domains/example.com/public_html/ 

parece que estamos usando:

/**
 * Set WordPress root as a given path.
 *
 * @param string $path
 */
private static function set_wp_root( $path ) {
    define( 'ABSPATH', rtrim( $path, '/' ) . '/' );
    WP_CLI::debug( 'ABSPATH defined: ' . ABSPATH, 'bootstrap' );
    $_SERVER['DOCUMENT_ROOT'] = realpath( $path );
}

e depois:

 is_readable( '/home/me/domains/example.com/public_html/wp-includes/version.php' )

torna-se falso porque com a configuração wp-skeleton , o diretório principal é:

/home/me/domains/example.com/public_html/wp/ 

Este teste é necessário, mas não é suficiente. Existem outros testes, e. o método Runner::find_wp_root() .

O motivo pelo qual funciona quando o OP está localizado em:

/home/me/domains/example.com/public_html/

pode ser por causa do Runner::extract_subdir_path() método que verifica o conteúdo do arquivo index.php com:

$index_code = file_get_contents( $index_path );

if ( !preg_match( 
         '|^\s*require\s*\(?\s*(.+?)/wp-blog-header\.php([\'"])|m', 
         $index_code, 
         $matches 
     ) 
) {
        return false;
}

para obter o subdiretório no qual o arquivo wp-blog-header.php está localizado e configurá-lo como $wp_path .

    
por birgire 27.10.2016 / 16:37

Tags