Могу ли я установить / обновить плагины WordPress без предоставления доступа по FTP?

527

Я использую WordPress на моем живом сервере, который использует SFTP с помощью SSH.

Я хочу установить и обновить плагины, но кажется, что вы должны ввести свой FTP-вход для установки плагинов. Есть ли способ установить и обновить плагины, вручную загрузив файлы вместо того, чтобы WordPress обрабатывал весь процесс?

  • 1
    Да, ты можешь. Просто используйте cPanel или любой другой инструмент для загрузки файлов, который у вас есть; загрузите zip-плагин и извлеките его в wp-content/plugins/ затем из wp dashboard перейдите на вкладку plugins и включите его.
  • 0
    Если вы используете VPS , попробуйте это: stackoverflow.com/a/44137965/3160597
Теги:

26 ответов

669

WordPress будет запрашивать информацию о вашем FTP-подключении только при попытке установить плагины или обновление WordPress, если оно не может напрямую записываться в /wp-content. В противном случае, если ваш веб-сервер имеет доступ на запись к необходимым файлам, он автоматически позаботится об обновлениях и установке. Этот метод не требует наличия доступа к FTP/SFTP или SSH, но для этого требуется, чтобы на вашем веб-сервере были установлены определенные разрешения на доступ к файлам.

Он попробует различные методы в порядке и откажется от FTP, если Direct и SSH методы недоступны.

https://github.com/WordPress/WordPress/blob/4.2.2/wp-admin/includes/file.php#L912

WordPress попытается записать временный файл в ваш каталог /wp-content. Если это удается, оно сравнивает право собственности на файл с собственным uid, и если есть совпадение, это позволит вам использовать "прямой" метод установки плагинов, тем или обновлений.

Теперь, если по какой-то причине вы не хотите полагаться на автоматическую проверку того, какой метод файловой системы использовать, вы можете определить константу 'FS_METHOD' в вашем файле wp-config.php, который является либо 'direct', 'ssh', 'ftpext' or 'ftpsockets', и он будет использовать этот метод. Имейте в виду, что если вы установите для этого "прямой", но ваш пользователь сети (имя пользователя, под которым работает ваш веб-сервер) не имеет надлежащих прав на запись, вы получите сообщение об ошибке.

В общем, если вы не хотите (или не можете) изменять разрешения на wp-контент, чтобы ваш веб-сервер имел разрешения на запись, затем добавьте это в свой файл wp-config.php:

define('FS_METHOD', 'direct');

Разрешения, описанные здесь:

  • 22
    Мне нужно было сделать: sudo chown -R www-data wp-content, а также предоставить права на запись
  • 5
    Использование getmyuid в строке 876, возможно, здесь некорректно, так как оно возвращает UID владельца скрипта, а не исполнителя скрипта. Я считаю, что это должен быть posix_getuid .
Показать ещё 9 комментариев
221

Как указывалось ранее, ни одна из перманентных исправлений не работает. Вам нужно соответствующим образом изменить perms и поместить в wp-config.php следующее:

define('FS_METHOD', 'direct');
  • 9
    Несмотря на то, что у меня были правильные разрешения, чтобы веб-сервер мог выполнять запись в каталог плагинов и каталог wp-content, этот параметр исправил его, поэтому администратор не запрашивал параметры FTP / SFTP для обновления плагинов. Спасибо. Работал отлично.
  • 5
    Я должен был явно сделать это также.
Показать ещё 6 комментариев
97

Просто хотел добавить, что вы НИКОГДА не должны устанавливать разрешение wp-content или разрешение любой папки на 777.

Вот что я должен был сделать, чтобы:

1) Я установил владение папкой wordpress (рекурсивно) для пользователя apache, например, так:

# chown -R apache wordpress/

В случае Ubuntu, Mint или Debian # chown -R www-data:www-data wordpress/

2) Я изменил групповое владение папкой wordpress (рекурсивно) на группу apache, вот так:

# chgrp -R apache wordpress/

Пропустите этот шаг для Ubuntu, Mint или Debian

3) дать владельцу полную привилегию на каталог, например так:

# chmod u+wrx wordpress/*

И это сделало работу. Моя папка wp-content имеет 755 разрешений, кстати.

TL; DR версия:

# chown -R apache:apache wordpress
# chmod u+wrx wordpress/*
  • 9
    установка вашего wordpress как принадлежащего apache так же плоха, как установка 777. Результат тот же: любой скрипт php теперь может изменять ваши файлы wordpress. Наилучший вариант - выбрать apache: временно установить apache, установить обновления и вернуться к исходному ИЛИ использовать трюк ssh / ftp
  • 10
    Я не согласен. Это не совсем то же самое, что и установка 777. Любой пользователь на машине будет иметь право на запись, если вы установите разрешения на 777. Это само по себе является проблемой. и хотя вы правы, этот apache теперь может изменять php-файлы, это было бы намерением в первую очередь (для обновления или установки чего-либо). Если кому-то удастся поместить вредоносные php-файлы на сервер, это совершенно новая проблема, и столкновение с различными пользователями мало что поможет.
Показать ещё 9 комментариев
68
  • В wp-config.php добавить define('FS_METHOD', 'direct');
  • Сделать сервер доступным для записи каталогами wp-content/, wp-content/plugins/.
  • Установите плагин (скопируйте каталог плагина в директорию wp-content/plugins).

Работает на версии 3.2.1

  • 4
    Работал и на версии 4.0.
  • 1
    Вы должны добавить эту опцию, но вам нужно только изменить разрешение на wp-content / plugins
Показать ещё 1 комментарий
42

откройте файл wp-config.php и добавьте следующую строку:

define('FS_METHOD', 'direct');

это работает для меня... спасибо

32

Просто быстрое изменение wp-config.php

define('FS_METHOD','direct');

Вот оно, наслаждайтесь обновлением wordpress без ftp!

Альтернативный метод:

Есть хосты, которые будут препятствовать работе этого метода чтобы облегчить обновление WordPress. К счастью, есть еще один способ не заставляйте этого вредителя запрашивать имя пользователя и пароль вашего FTP.

Опять же, после объявлений входа MYSQL в файле wp-config.php, добавьте следующее:

define("FTP_HOST", "localhost");
define("FTP_USER", "yourftpusername");
define("FTP_PASS", "yourftppassword");
22

Чтобы включить использование SSH2 для ваших обновлений и загрузки тем, вы должны сгенерировать свои SSH-ключи и установить модуль PHP SSH. Затем WordPress обнаружит, что у вас есть SSH2, и вы увидите другой вариант (SSH2), отображаемый при выполнении загрузки/обновления.

1.) Убедитесь, что у вас установлен модуль PHP для debian:

sudo apt-get install libssh2-php

2.) Создайте ключи SSH, добавив кодовую фразу:

ssh-keygen
cd  ~/.ssh
cp id_rsa.pub authorized_keys

3.) Измените разрешение, чтобы WordPress мог получить доступ к этим клавишам:

cd ~
chmod 755 .ssh
chmod 644 .ssh/*

Теперь вы получите опцию SSH2 при выполнении загрузки/обновления/плагина. Изображение 3414

4.) Для дополнительной простоты вы можете настроить значения по умолчанию в своем wp-config.php, и это предварительно заполнит учетные данные SSH в окне загрузки WordPress.

define('FTP_PUBKEY','/home/<user>/.ssh/id_rsa.pub');
define('FTP_PRIKEY','/home/<user>/.ssh/id_rsa');
define('FTP_USER','<user>');
define('FTP_PASS','passphrase');
define('FTP_HOST','domain.com');

"passphrase" является необязательным, если вы не устанавливаете кодовую фразу во время ssh-kengen; то не добавляйте его в wp-config.php

Это решило мою проблему. И мне вообще не нужно было делать chown. Но я видел этот метод в других местах.

Литература:

  • 0
    я не эксперт по безопасности, и я понимаю, что WordPress включил эту возможность и подумал, что все в порядке .... но я не чувствую себя хорошо по этому поводу ... 1. иметь учетную запись ssh без пароля (любой, кто когда-либо получит После этого закрытый ключ может удаленно войти в систему в любое время, когда они захотят, без пароля) и 2. имея пароль в виде открытого текста (см. 1). это напоминает мне rsh, в зависимости от того, что «никто не будет иметь доступа к моим локальным файлам» для защиты сетевого пароля к системе.
  • 0
    Я уверен, что вы можете сгенерировать парольную фразу и НЕ добавлять ее в wp-config.php, тогда вам просто нужно будет ввести ее, когда вы попадете в диалоговое окно Информация о соединении.
Показать ещё 2 комментария
18

Обычно вы можете просто загрузить свой плагин в каталог wp-content\plugins. Если у вас нет доступа к этому каталогу через SFTP, я боюсь, что вы можете застрять.

  • 0
    Да, просто добавьте их в wp-content / plugins.
15

Выполните следующий код в терминале

sudo chown -R www-data /var/www

Подробнее Wordpress на Ubuntu устанавливает плагины без доступа к FTP

  • 4
    Не очень хорошая идея предоставлять доступ к www-данным ко всему в вашем веб-каталоге
15

Вы можете получить это очень легко, набрав следующую команду в командной строке

sudo chown -R www-data:www-data your_folder_name

или скопируйте и вставьте следующий код в файл wp-config.php.

define('FS_METHOD', 'direct');

Где "your_folder_name" - это папка, в которой установлен ваш WordPress внутри этой папки.

15

Добавьте следующий код в wp-config

define('FS_METHOD', 'direct');

FS_METHOD вызывает метод файловой системы. Это должны быть только прямые, ssh2, ftpext или ftpsockets. Как правило, это необходимо изменить, если вы испытываете проблемы с обновлением. Если вы измените его, и это не поможет, замените его/удалите. В большинстве случаев установка его в "ftpsockets" будет работать, если автоматически выбранный метод не работает.

(первичное предпочтение) "direct" заставляет его использовать запросы на ввод-вывод Direct File из PHP, это чревато открытием проблем безопасности на плохо настроенных хостах. Это выбирается автоматически, когда это необходимо.

(Secondary Preference) "ssh2" - принудительно использовать расширение PHP SSH, если установлено

(3-е предпочтение) "ftpext" - принудительное использование расширения PHP PHP для FTP-доступа и, наконец,

(4-я преференция) "ftpsockets" использует класс сокетов PHP для доступа к FTP

Для получения дополнительной информации посетите: http://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants

13

Если вы находитесь на Ubuntu, быстрое решение, которое сработало для меня, - это передача права собственности на Apache пользователь (www-data по умолчанию):

cd your_wordpress_directory
sudo chown -R www-data wp-content
sudo chmod -R 755 wp-content
  • 2
    Не давайте разрешения на выполнение файлам, которые ему не нужны.
11

WordPress 2.7 позволяет загружать zip файл напрямую (там есть ссылка внизу страницы плагинов) - не требуется FTP-доступ. Это новая функция в версии 2.7, и она работает только для плагинов (еще не темы).

  • 0
    Кстати, обновление еще проще - вы увидите значок, указывающий, что доступна новая версия, и вы нажмете «обновить» и дайте ему сделать свое дело. Очень хорошо. Даже ядро WordPress обновляется таким образом - я перешел с 2.7 на 2.7.1 без загрузки чего-либо.
  • 0
    Это верно только в том случае, если у вас установлены права доступа к файлам, чтобы веб-сервер / пользователь PHP мог писать в них. Если нет, вам будет предложено ввести учетные данные FTP / SFTP. Смотрите ответ Stereointeractive.com.
9

Попробуйте это

1) В wp-config.php add define ('FS_METHOD', 'direct');

2) Установите для каталога "wp-content" значение 777 для записи.

3) Теперь установите плагин.

  • 6
    Привет, Мохан, спасибо огромное за опцию FS_METHOD. Это действительно то, что я искал. Мне нужно сказать следующее: ни одному каталогу не нужен каждый 777, если только обстоятельства не являются исключительными. Это делает каталог доступным для чтения, записи и выполнения. Это огромный риск для безопасности. Правильным решением будет выяснить, кто ваш пользователь Apache (www-data, _www или аналогичный). Этому пользователю необходим доступ для чтения и записи к wp-контенту или право владения этим каталогом («sudo chown www-data wp-content»), нет прав на выполнение. Извините, что немного тупой, но 777 опасен для веб-контента.
  • 8
    Не загружайте каталог 777, это небезопасно и не должно быть ответом!
9

Возобновление старого потока, но есть новый плагин под названием SSH SFTP Updater Support, который добавляет в возможности SFTP без необходимости редактировать ваш файл wp-config.php. Кроме того, реализация Wordpress SFTP основана на некоторых несколько неясных модулях PHP, которые часто не поддерживаются серверами; этот плагин упаковывает другой плагин PHP SFTP, поэтому вам не нужно ничего настраивать на стороне Apache.

У меня возникло множество проблем, связанных с получением поддержки SFTP - этот плагин решил все из них и просто фантастичен.

8

Да, прямо установите плагин в WordPress.

  • Скопируйте папку плагина и вставьте в папку плагина WordPress.
  • перейдите к стороне администратора (/test/wp-admin), затем перейдите к ссылке плагина и проверьте имя плагина.
  • Активируйте плагин, чтобы легко установить плагин.

другой вариант

  • создать zip файл для кода плагина.
  • перейдите к административной стороне (/test/wp-admin), затем перейдите по ссылке плагина, а затем нажмите кнопку "Добавить новое", затем просмотрите папку zip-плагина и установите плагин, затем выйдите из опции "включить плагин", чтобы сделать активировать плагин и активировать плагин.
8

Я также рекомендую плагин поддержки SSH SFTP Updater Support. Просто решили все мои проблемы тоже... особенно в отношении получения плагинов для удаления через администратора. Просто установите его обычным способом, и в следующий раз, когда вам будут предложены данные WordPress для FTP, вам будут добавлены дополнительные поля для копирования/вставки частного SSH-ключа или загрузки вашего файла PEM.

Единственная проблема, с которой я столкнулся, заключается в том, чтобы запомнить ключ (попробовал оба метода). Не нравится идея найти и ввести его каждый раз, когда мне нужно удалить плагин. Но по крайней мере это твердое решение на данный момент.

  • 1
    «для вас будут дополнительные поля для копирования / вставки вашего личного ключа SSH» .... я не гений безопасности, но ... не весь смысл личных ключей ssh в том, что вам никогда не придется отправлять их по сети ?
8

Ответ от stereointeractive охватывает все варианты. Просто хотел упомянуть альтернативный способ использования FTP. Я предполагаю, что причина, по которой вы не разрешаете FTP-доступ, для безопасности. Один из способов решения этих проблем безопасности - запустить ваш FTP-сервер, прослушивая только 127.0.0.1

Это позволяет использовать FTP изнутри WordPress, и вы сможете устанавливать плагины, не подвергая его остальному миру. Это также можно применить к другим популярным веб-приложениям, таким как Joomla! и Drupal. Это то, что мы делаем с нашими устройствами BitNami и облачными серверами и работает достаточно хорошо.

6
  1. перейти с php_mod на fastcgi с fastcgi cgi & SuEXEC, у меня работает

не забывай если не работаешь попробуй поменять

  1. изменить wp-контент на 775 как root

    chmod -R 775./wp-content

  2. добавить в wp-config.php

    define ('FS_METHOD', 'direct');

надеюсь это работает

6

Можно использовать SFTP или SSH для автоматического обновления плагинов в WordPress, но вам нужно иметь расширение ssh2 pecl. Вы можете узнать, как это сделать, используя следующий учебник

6

Мы используем SFTP с SSH (как на наших серверах разработки, так и на живых серверах), и я попытался (не слишком сложно) использовать функцию загрузки WordPress. Я согласен с Тоби, загрузите плагин в каталог wp-content/plugins и затем активируйте их оттуда.

5

Я видел много людей, рекомендующих установить разрешение на 777. У меня была такая же проблема, как и 2 дня назад, и все, что я сделал, добавили это в wp-content

define('FS_METHOD', 'direct');

и

установить разрешение для 775 для папки с плагинами

Это решило мою проблему с запросом входа/пароля для доступа к FTP.

До этого я должен был добавить плагин вручную, добавив файл .zip в папку плагина, а затем перейдите к wp-admin/plugins и должен был установить его.

3

Попробуйте это. Проверьте правильность разрешения доступа к папке wp-content.

Отредактируйте wp-config.php и добавьте следующую строку

define('FS_METHOD', 'direct');

chmod каталог "wp-content" в www-data для полного доступа.

Теперь попробуйте установить плагин.

2

установка ftp, или даже SFTP-соединения, или chmod 777 - плохой путь для чего-либо, кроме локальной среды. Открытие даже метода SFTP создает больше рисков для безопасности, которые не нужны.

для этого требуется разрешение на запись /wp-content/uploads &/wp-content/plugins/владельцем этих каталогов. (linux ls -la покажет вам право собственности).

Пользователь Apache по умолчанию - www-data.

CHMOD 777 позволяет редактировать эти файлы любому пользователю машины, а не только пользователю ветки apache/php.

SFTP, если вы еще не используете его, представит другую точку возможного сбоя из внешнего источника. В то время как для выполнения задачи вам нужен доступ только локальному пользователю, выполняющему процесс apache/php.

Я не видел, чтобы кто-то высказывал эти замечания, поэтому я подумал, что предложу эту информацию, чтобы помочь с нашими постоянными проблемами безопасности WP в Интернете.

0

Лучший способ установить плагин с использованием SSH - это WPCLI.

Обратите внимание, что доступ SSH является обязательным для использования команд WP CLI. Перед использованием проверьте, установлен ли WP CLI на вашем хост-сервере или компьютере.

Как проверить: wp --version [Он покажет установленную версию wp cli]

Если он не установлен, как его установить. Перед установкой WP-CLI убедитесь, что среда соответствует минимальным требованиям:

UNIX-подобная среда (OS X, Linux, FreeBSD, Cygwin); ограниченная поддержка в среде Windows. PHP 5.4 или более поздняя версия WordPress 3.7 или более поздняя версия. Версии, более старые, чем последняя версия WordPress, могут иметь пониженную функциональность

Если вышеуказанные пункты удовлетворены, пожалуйста, следуйте инструкциям: Ссылочный URL: WPCLI

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
[ download the wpcli phar ]

php wp-cli.phar --info [ check whether the phar file is working ]

chmod +x wp-cli.phar [ change permission ]
sudo mv wp-cli.phar /usr/local/bin/wp [ move to global folder ]
wp --info [ to check the installation ]

Теперь WP CLI готов к установке.

Теперь вы можете установить любой плагин, доступный в WordPress.org, используя следующие команды:

wp install plugin plugin-slug
wp delete plugin plugin-slug
wp deactivate plugin plugin-slug

ПРИМЕЧАНИЕ: wp cli может устанавливать только те плагины, которые доступны на wordpress.org

0

Вы можете иметь файл Zilla и использовать учетную запись FTP для обновления плагинов и тем. Или вы можете просто войти в Cpanel и получить доступ к папке WordPress, а затем вы можете обновить тему, разархивировав тему или плагин.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню