WP cli --path non sembra funzionare
WP-cli non sembra funzionare quando aggiungo un parametro --path
me@host:~$ wp plugin status --path=`/home/me/domains/example.com/public_html`
-bash: /home/me/domains/example.com/public_html: è una directory
Errore: Questa non sembra essere un'installazione WordPress.
Specifica --path=`percorso/wordpress` oppure esegui `wp core download`.
Se eseguo cd
nella directory e poi lancio il comando senza il percorso, funziona.
Ho wp-cli 0.25
Aggiornamento
Informazioni aggiuntive quando aggiungo il flag --debug
Debug (bootstrap): Nessun file di configurazione globale leggibile trovato (0.031s)
Debug (bootstrap): Nessun file di configurazione del progetto trovato (0.032s)
Debug (bootstrap): Nessun autoload del package trovato da caricare. (0.39s)
Debug (bootstrap): ABSPATH definito: /home/me/domains/example.com/public_html/ (0.39s)
Qualcuno ha un'idea di cosa sto sbagliando?

È come se stessi provando a eseguire:
wp plugin status --path=$(/home/me/domains/example.com/public_html)
perché ciò che è racchiuso tra i backtick viene valutato.
Ecco una buona lettura sull'uso dei backtick nella riga di comando.
Permettimi di citare @rozcietrzewiacz:
Il backtick non è un segno di quotazione, ha un significato molto speciale. Tutto ciò che digiti tra backtick viene valutato (eseguito) dalla shell prima del comando principale [...]
Alternative:
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 la configurazione wp-skeleton, devo puntare alla cartella core wp/
, non alla cartella superiore che contiene il file wp-config.php
.
Aggiornamento:
All'interno della classe Runner abbiamo:
/**
* I file core di WordPress esistono?
*
* @return bool
*/
private function wp_exists() {
return is_readable( ABSPATH . 'wp-includes/version.php' );
}
e quando impostiamo ABSPATH
con
--path=/home/me/domains/example.com/public_html/
sembra che stiamo usando:
/**
* Imposta la root di WordPress come un determinato percorso.
*
* @param string $path
*/
private static function set_wp_root( $path ) {
define( 'ABSPATH', rtrim( $path, '/' ) . '/' );
WP_CLI::debug( 'ABSPATH definito: ' . ABSPATH, 'bootstrap' );
$_SERVER['DOCUMENT_ROOT'] = realpath( $path );
}
e poi:
is_readable( '/home/me/domains/example.com/public_html/wp-includes/version.php' )
diventa false perché con la configurazione wp-skeleton, la directory core è:
/home/me/domains/example.com/public_html/wp/
Questo test è necessario ma non sufficiente. Ci sono altri test, ad esempio il metodo Runner::find_wp_root()
.
Il motivo per cui funziona quando OP si trova all'interno di:
/home/me/domains/example.com/public_html/
potrebbe essere dovuto al metodo Runner::extract_subdir_path()
che analizza il contenuto del file 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;
}
per ottenere la sottodirectory in cui si trova il file wp-blog-header.php
e impostarla come $wp_path
.

È davvero fastidioso che wp-cli lo suggerisca nell'errore. Ma nessuna delle varianti funziona :(

Sì, è strano. Ottieni esattamente gli stessi errori quando provi le alternative? @janw

È lo stesso ma senza la riga -bash: /home/me/domains/example.com/public_html/: is a directory
.

sì, mi aspettavo che l'errore -bash scomparisse lì. Quando uso la configurazione wp-skeleton, devo puntare alla cartella core wp/, non alla cartella superiore che contiene il file wp-config.php. Non sono sicuro se stai usando una configurazione specifica @janw

Sì, sto usando uno skeleton. aggiungere ...mple.com/public_html/wp
funziona. Se aggiungi questa parte accetterò la risposta
