Установка и обновление плагинов и тем в WordPress без FTP данных

Ориентировочно с версии 2.7 Вордпресс начал поддерживать автоматическую установку и обновление плагинов и тем без ввода данных FTP для загрузки файлов. На многих хостингах эта фишка работает, но на некоторых она все же не срабатывает и требует ввести данные ля доступа по ФТП. Честно говоря это напрягает и я решил вплотную разобраться, как это исправить.

Установка и обновление плагинов и тем в WordPress без FTP

После долгих поисков в сети удалось кое-что найти. Судя по всему, основной причиной выдачи подобного запроса для загрузки через FTP оказывается недоступность стандартной временной папки в операционной системе сервера. Попросту, Вордпресс не знает куда загружать и где распаковывать файл плагина или темы для дальнейшей установки или обновления.

Решить эту проблему можно прямо в конфигурационном файле wp-config.php, указав идентификатор временной папки еще парочку строк кода, чтобы движок понимал что и куда загружать.

И так, открываем файл конфига и ищем следующую запись.

define('DB_COLLATE', '');

Вставляем после нее следующую строку:

define('WP_TEMP_DIR','/path/to/tmp/dir');

где /path/to/tmp/dir — собственно путь к временной папке. Я создал в папке Вордпреса временную temp и указал к ней путь от корня хостинга.

Далее в конец конфига вставляем еще такой код:

if(is_admin()) { 
add_filter('filesystem_method', create_function('$a', 'return "direct";' )); 
define( 'FS_CHMOD_DIR', 0751 ); 
}

И не забываем сохранить файл.

Если вы все сделали правильно и указанный путь верен, то теперь WordPress должен устанавливать и обновлять компоненты без запроса фтп доступа.

Но опять таки, в зависимости от настроек сервера могут возникнуть проблемы с доступом к папкам самого WP и может высочить что-то подобное:

Не удалось создать директорию. /var/www/clients/client0/web1/web/lib/wp-content/upgrade/w3-total-cache.tmp.

Чтобы не было такого, задаем права доступа на созданную временную папку и папку wp-content:

chmod 777 wp-content

Если вы не знаете что это такое и как сделать, то проще всего воспользоваться файловым менеджером типа FileZilla. Установив данный клиент и зайдя на сервер с вашими данными ФТП ищем папку с Вордпресс, после чего выбираем папки и в контекстном меню выбираем пункт согласно следующему рисунку.

задаем права на доступ к папкам

Устанавливаем права как указано на следующем скриншоте:

устанавливаем права 777

Жмем ОК и теперь все готово.

После данных операций все должно работать! Например, при попытке обновить плагин вы должны в результате увидеть что-то подобное:

результат обновления плагина Вордпресс

Пользуемся на здоровье! Если все еще что-то не работает, милости прошу к комменты, попробуем разобраться!

IgorOsa

25 комментариев

  1. Надежда Романова:

    Добрый день.

    Возможно я туплю, но подскажите плиз как именно писать путь к созданной временной папке, где его смотреть

  2. IgorOsa:

    Некоторые панели управления хостингом позволяют смотреть информацию относительно пути к корню сайта. В разных панелях эти данные могут быть в разных местах.

    Если вы не знаете где его смотреть, то лучше обратитесь в поддержку вашего хостера с вопросом о полном пути к папке сайта.

  3. Hard:

    Добрый день!
    После обновления версии wordpress/ перестал работать визуальный редактор.
    Деактивировал визуальный редактор tinymce, но проблема не прошла.
    В админке висят 7 обновлений, если нажимаю на плагин редактора обновить сейчас : получаю вот такое сообщение :
    Загрузка обновления с https://downloads.wordpress.org/plugin/tinymce-advanced.3.5.9.1.zip…
    Извлечение обновления…
    Не удалось создать директорию.
    Как быть?
    заранее спасибо!
    С уважением

  4. Hard:

    Обновился на wordpress-3.8.2-ru_RU, до этого стояла wordpress-3.6.1-ru_RU.zip,
    Визуальный редактор работал, но плагины так же не обновлялись..

    • IgorOsa:

      На счет плагинов, то вероятно у вас права доступа на папку wp-content и ее вложения неправильно выставлены. Все вложенные папки желательно сделать с правами 777.

      Текущая версия tinymce видимо не совместима с данной версией WP. Нужно ждать более новую или использовать стандартный визуальный редактор WP.

      • Hard:

        Права на папки установил,все плагины обновились. Спасибо!
        Обновился так же редактор, но результата нет. На просторах сети прочитал . что может быть конфликт.. И нужно методом исключения пробовать.
        Если его деактивировать должен заработать встроенный редактор?

        • IgorOsa:

          Должен заработать.

          • Hard:

            Не помогло, нашёл тут статью …. добавьте такой параметр в конфигурацию WordPress (wp-config.php): define(‘CONCATENATE_SCRIPTS’, false);
            И что Эта функция поможет распределить работу js-скриптов админ. панели, и вся функциональность должна быть восстановлена. редактор почти заработал. ключевое слово почти )) те если выделять текст мышкой. то он виден,а так нет.
            Еще автор там же советует посмотреть работу скриптов. на баг.
            Альтернативный вариант – включить режим отладки WordPress (в конфигурационном файле (wp-config.php)):

            Код: Выделить всё
            define(‘WP_DEBUG’, true);
            Но пока,какая-то фигня получается.. Ох уж этот ворд пресс..
            уже часа 4 ковыряю..

          • IgorOsa:

            В таком случае уже ничего не подскажу. Как-то не доводилось использовать альтернативные визуальные редакторы. Я и стандартным пользуюсь только для корректировок, а пишу в основном через Live Writer.

  5. Hard:

    Проблема решилась, через дебаггер – путем поиска конфликтов.
    Потом, нашел еще проще способ,выключил все плагины, очистил кеш.
    Редактор заработал, и стал включать поочередно плагины.
    Спасибо за участие!

  6. Hard:

    Интересен Live Writer..=)

  7. rayne:

    Работает. Хорошее решение. Спасибо IgorOsa

  8. Татьяна:

    Сделала все, как описано в статье, но не обновляется и темы не устанавливаются.
    Пишет:
    Загрузка обновления с http://downloads.wordpress.org/release/ru_RU/wordpress-4.4.1.zip…
    Загрузка не удалась.: error setting certificate verify locations: CAfile: ../ca-bundle/ca-bundle.crt CApath: none
    Установка не удалась

    Что делать? TAG.Hosting не отвечает, и помогать я чувствую, не собирается!

    • IgorOsa:

      Я уже давно не пробовал, работает ли эта функция в последних версиях WP. Давно перешел на выделенный сервер и среду, где подобные манипуляции не нужны. Все работает по умолчанию. Поэтом точную причину, к сожалению, не подскажу. Хотя, скорее всего дело в правах. Проверяйте права на файлы и папки. Часто что-то пропускается и из-за этого не происходит перезапись новыми файлами.

      • Виталий:

        У меня виртуальный сервер. Предложенное в статье решение выдает такую ошибку:

        Downloading update from https://downloads.wordpress.org/release/ru_RU/wordpress-4.4.2.zip…

        Warning: unlink(/wp-content/uploads/tmpdr/wordpress-4.4.2-Hh6MG4.tmp): No such file or directory in /srv/www/мой_сайт.com/httpdocs/wp-admin/includes/file.php on line 481

        Download failed.: Destination directory for file streaming does not exist or is not writable.

        Installation Failed

        Хотя все каталоги по пути из корня сайта к /wp-content/uploads/tmpdr/ имеют 777. Что бы это могло быть?

        • IgorOsa:

          Как Вы пишете путь в define(‘WP_TEMP_DIR’,’/path/to/tmp/dir’); ?
          Должно быть от корня сервера, что-то типа “/srv/www/мой_сайт.com/httpdocs/wp-content/uploads/tmpdr/”.

          Ну и права должны быть правильные не только у “tmpdr”. Если обновляется весь ВП, то у всех файлов и папок от корня должны быть правильные права. Правда там 777 не стоит. Может и 644 хватить. Иногда по умолчанию ставятся ниже и следовательно при распаковке нового ВП старые файлы не могут перезаписываться.

          • Виталий:

            Сменил путь, чтобы шло от /srv/…

            Теперь начинает загрузку, а после семи-десяти секунд выдает:

            Downloading update from https://downloads.wordpress.org/release/wordpress-4.4.2-no-content.zip…

            Unpacking the update…

            Warning: copy(/srv/www/aviatranslation.com/httpdocs/wp-admin/includes/update-core.php): failed to open stream: Permission denied in /srv/www/мой_сайт.com/httpdocs/wp-admin/includes/class-wp-filesystem-direct.php on line 257

            The update cannot be installed because we will be unable to copy some files. This is usually due to inconsistent file permissions.: wp-admin/includes/update-core.php

            Installation Failed

            В /srv/www/мой_сайт.com/httpdocs/wp-admin/includes/class-wp-filesystem-direct.php находится следующая функция:

            public function copy($source, $destination, $overwrite = false, $mode = false) {
            if ( ! $overwrite && $this->exists($destination) )
            return false;

            $rtval = copy($source, $destination);
            if ( $mode )
            $this->chmod($destination, $mode);
            return $rtval;
            }
            Указанная 257-я строка – это

            $rtval = copy($source, $destination);

          • IgorOsa:

            Данная функция не можете переписать старые файлы новыми. Все дело в правах доступа к файлам. В тексте так и написано “This is usually due to inconsistent file permissions.”.
            Попробуйте сменить права всех файлов в каталогах wp-admin, wp-include и в корне на 644. Если не пройдет, повысьте до 755.

  9. Виталий:

    Не знаю, что делать. Переписал права ВСЕХ файлов в wp-admin, wp-include и в корне на 755 – были до этого 644. Та же ошибка, что и в предыдущем моем сообщении…

    • Виталий:

      Но при этом удалось автоматически проапгрейдить плагин Akismet.

      • IgorOsa:

        Все говорит о правах. Получается, что в wp-content прав достаточно, а для обновления самого WP нет. А какие права у верхней папки httpdocs? Не уверен, что поможет, но можно попробовать и ей повысить права. Попробуйте еще 775.

  10. Виталий:

    Вроде бы все файлы до единого имеют нужные разрешения, и папки тоже. Даже на .htaccess 777 выставил на время.

    Может быть можно как-то модифицировать процесс апгрейда, чтобы он выводил на экран конкретный файл, на котором прекратилось копирование?

    • IgorOsa:

      Так Вы пробовали на папку верхнего уровня установить 777 (httpdocs)?
      Ели даже 777 на все файлы и папки не помогает, то скорее всего какой-то конфликт. В логах сервера могут быть данные по обращению к файлам и ошибках.

Добавить комментарий

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.