WP cli --path no parece funcionar

27 oct 2016, 17:08:53
Vistas: 13.8K
Votos: 6

WP-CLI no parece funcionar al añadir el parámetro --path

me@host:~$ wp plugin status --path=`/home/me/domains/example.com/public_html`
-bash: /home/me/domains/example.com/public_html: es un directorio
Error: Esto no parece ser una instalación de WordPress.
Pasa --path=`ruta/a/wordpress` o ejecuta `wp core download`.

Si hago cd al directorio y luego ejecuto el comando sin la ruta, sí funciona.
Tengo wp-cli 0.25

Actualización
Información adicional al añadir la bandera --debug

Debug (bootstrap): No se encontró configuración global legible (0.031s)
Debug (bootstrap): No se encontró configuración de proyecto (0.032s)
Debug (bootstrap): No se encontró autoload de paquetes para cargar. (0.39s)
Debug (bootstrap): ABSPATH definido: /home/me/domains/example.com/public_html/ (0.39s)

¿Alguien tiene idea de lo que estoy haciendo mal?

1
Comentarios

Agrega "--debug" a tu llamada y pega la salida en tu pregunta

jgraup jgraup
28 oct 2016 16:34:39
Todas las respuestas a la pregunta 1
6

Es como si intentaras ejecutar:

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

porque lo que está dentro de las comillas invertidas se evalúa.

Aquí hay una buena lectura sobre el uso de comillas invertidas en la línea de comandos.

Permíteme citar a @rozcietrzewiacz:

La comilla invertida no es un signo de citación, tiene un significado muy especial. Todo lo que escribas entre comillas invertidas es evaluado (ejecutado) por el shell antes del 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'

Cuando uso la configuración wp-skeleton, tengo que apuntar a la carpeta principal wp/, no a la carpeta superior que contiene el archivo wp-config.php.

Actualización:

Dentro de la clase Runner tenemos:

/**
 * ¿Existen los archivos principales de WordPress?
 *
 * @return bool
 */
private function wp_exists() {
    return is_readable( ABSPATH . 'wp-includes/version.php' );
}

y cuando establecemos ABSPATH con

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

parece que estamos usando:

/**
 * Establece la raíz de WordPress como una ruta dada.
 *
 * @param string $path
 */
private static function set_wp_root( $path ) {
    define( 'ABSPATH', rtrim( $path, '/' ) . '/' );
    WP_CLI::debug( 'ABSPATH definido: ' . ABSPATH, 'bootstrap' );
    $_SERVER['DOCUMENT_ROOT'] = realpath( $path );
}

y luego:

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

se convierte en falso porque con la configuración wp-skeleton, el directorio principal es:

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

Esta prueba es necesaria pero no suficiente. Hay otras pruebas, por ejemplo, el método Runner::find_wp_root().

La razón por la que funciona cuando el OP se encuentra dentro de:

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

podría ser debido al método Runner::extract_subdir_path() que escanea el contenido del archivo index.php con:

$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 obtener el subdirectorio donde se encuentra el archivo wp-blog-header.php y establecerlo como $wp_path.

27 oct 2016 17:37:24
Comentarios

Bueno, es molesto que wp-cli lo sugiera en el error. Pero ninguna de las variantes funciona :(

janw janw
28 oct 2016 11:33:48

Sí, eso es extraño. ¿También obtienes exactamente los mismos errores al probar las alternativas? @janw

birgire birgire
28 oct 2016 12:44:37

Es lo mismo pero sin la línea -bash: /home/me/domains/example.com/public_html/: es un directorio.

janw janw
28 oct 2016 17:16:44

sí, esperaba que el error -bash desapareciera allí. Cuando uso la configuración wp-skeleton, tengo que apuntar a la carpeta principal wp/, no a la carpeta superior que contiene el archivo wp-config.php. No estoy seguro si estás usando alguna configuración específica @janw

birgire birgire
28 oct 2016 17:27:14

Sí, estoy usando un esqueleto. agregar ...mple.com/public_html/wp sí funciona. Si agregas esta parte, aceptaré la respuesta

janw janw
28 oct 2016 18:01:10

genial, me alegra escuchar que funcionó ;-) Claro, actualicé la respuesta @janw

birgire birgire
28 oct 2016 18:12:41
Mostrar los 1 comentarios restantes