WP cli --path no parece funcionar
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?

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
.

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

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

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

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

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