web-dev-qa-db-ja.com

WP cli --pathが機能していないようです

--pathパラメータを追加するとき、WP-cliは動作しないようです

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`.

Dirにcdしてからパスを指定せずにコマンドを実行するとうまくいきます。
wp-cli 0.25があります

アップデート
--debugフラグを追加するときの追加情報

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)

誰かが私が間違っていることの手がかりを得ましたか?

4
janw

実行しようとしているかのようです。

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

バッククォートの内側にあるものが評価されるからです。

こちら コマンドラインでバッククォートを使うことについての良い読み物。

私が引用してみましょう @rozcietrzewiacz

バックティックは引用符ではありません 、それは非常に特別な意味を持ちます。バッククォートの間に入力したものはすべてメインコマンドの前にシェルによって評価(実行)されます[...]

代替案:

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'

wp-skeleton セットアップを使用するときは、wp/ファイルを含むその上のフォルダーではなく、wp-config.phpコアフォルダーを指す必要があります。

更新:

Runner クラス内に、

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

そしてABSPATHをで設定したとき

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

私たちが使っているように見えます。

/**
 * 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 );
}

その後:

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

wp-skeleton setupの場合、コアディレクトリは次のようになるため、falseになります。

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

このテストは必要ですが十分ではありません。他にもテストがあります。 Runner::find_wp_root() メソッド.

OPが次の場所にある場合に機能する理由

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

index.phpファイルの内容をスキャンする Runner::extract_subdir_path() メソッドが原因である可能性があります。

$index_code = file_get_contents( $index_path );

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

wp-blog-header.phpファイルが配置されているサブディレクトリを取得し、それを$wp_pathとして設定します。

5
birgire