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

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

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

Ответы [ 28 ]

722 голосов
/ 13 апреля 2011

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', и это будет использовать этот метод. Имейте в виду, что если вы установите для него значение «direct», но ваш веб-пользователь (имя пользователя, под которым работает ваш веб-сервер) не имеет надлежащих разрешений на запись, вы получите сообщение об ошибке.

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

define('FS_METHOD', 'direct');

Разрешения объяснены здесь:

236 голосов
/ 22 февраля 2012

Как указывалось ранее, ни одно из пермских исправлений больше не работает. Вам необходимо соответствующим образом поменять ПЕРЕДАЧУ и указать в вашем wp-config.php следующее:

define('FS_METHOD', 'direct');
97 голосов
/ 18 мая 2013

Просто хотел добавить, что вы НИКОГДА не должны устанавливать разрешение 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/*
69 голосов
/ 16 апреля 2012
  1. В wp-config.php добавить define('FS_METHOD', 'direct');
  2. Сделать сервер доступным для записи в каталогах wp-content/, wp-content/plugins/.
  3. Установите плагин (скопируйте каталог плагина в wp-content/plugins dir).

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

49 голосов
/ 27 февраля 2016

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

define('FS_METHOD', 'direct');

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

33 голосов
/ 26 декабря 2014

Просто быстрое изменение на 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");
21 голосов
/ 16 июня 2013

Чтобы включить использование 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 при выполнении загрузки / обновления / плагина. WP SSH Connection

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');

«Пароль» необязателен, если вы не настроили пароль во время ssh-kengen; тогда не добавляйте его в wp-config.php

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

Ссылка:

19 голосов
/ 12 марта 2009

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

17 голосов
/ 21 июня 2014

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

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

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

define('FS_METHOD', 'direct');

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

15 голосов
/ 22 мая 2014

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

define('FS_METHOD', 'direct');

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

(Primary Preference) «direct» заставляет его использовать запросы прямого файлового ввода-вывода из PHP, это чревато открытием проблем безопасности на плохо настроенных хостах. Это выбирается автоматически при необходимости.

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

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

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

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

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