WP CLI --path не работает: решение проблемы

27 окт. 2016 г., 17:08:53
Просмотры: 13.8K
Голосов: 6

WP-CLI не работает при добавлении параметра --path

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

Если я перехожу в директорию через 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)

Кто-нибудь знает, что я делаю не так?

1
Комментарии

Добавьте "--debug" к вашему вызову и вставьте вывод в ваш вопрос

jgraup jgraup
28 окт. 2016 г. 16:34:39
Все ответы на вопрос 1
6

Как если бы вы пытались выполнить:

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 есть:

/**
 * Существуют ли файлы ядра WordPress?
 *
 * @return bool
 */
private function wp_exists() {
    return is_readable( ABSPATH . 'wp-includes/version.php' );
}

и когда мы устанавливаем ABSPATH с помощью

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

выглядит так, как будто мы используем:

/**
 * Установить корень WordPress по заданному пути.
 *
 * @param string $path
 */
private static function set_wp_root( $path ) {
    define( 'ABSPATH', rtrim( $path, '/' ) . '/' );
    WP_CLI::debug( 'ABSPATH определен: ' . ABSPATH, 'bootstrap' );
    $_SERVER['DOCUMENT_ROOT'] = realpath( $path );
}

и затем:

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

возвращает false, потому что при настройке wp-skeleton корневая директория:

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

Этот тест необходим, но недостаточен. Есть и другие тесты, например, метод Runner::find_wp_root().

Причина, по которой это работает, когда OP находится внутри:

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

может быть связана с методом Runner::extract_subdir_path(), который сканирует содержимое файла index.php с помощью:

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

27 окт. 2016 г. 17:37:24
Комментарии

Очень раздражает, что wp-cli предлагает это в ошибке. Но ни один из вариантов не работает :(

janw janw
28 окт. 2016 г. 11:33:48

Да, это странно. Вы также получаете точно такие же ошибки при попытке альтернативных вариантов? @janw

birgire birgire
28 окт. 2016 г. 12:44:37

То же самое, но без строки -bash: /home/me/domains/example.com/public_html/: is a directory.

janw janw
28 окт. 2016 г. 17:16:44

да, я ожидал, что ошибка -bash исчезнет. Когда я использую настройку wp-skeleton, мне нужно указывать на папку ядра wp/, а не на папку выше, содержащую файл wp-config.php. Не уверен, используешь ли ты какую-то особую настройку @janw

birgire birgire
28 окт. 2016 г. 17:27:14

Да, я использую скелетон. Добавление ...mple.com/public_html/wp действительно работает. Если ты добавишь эту часть, я приму ответ

janw janw
28 окт. 2016 г. 18:01:10

отлично, рад, что это сработало ;-) Конечно, я обновил ответ @janw

birgire birgire
28 окт. 2016 г. 18:12:41
Показать остальные 1 комментариев