Я установил блог Wordpress в свою локальную систему. Но когда я пытаюсь добавить плагины из admin, он запрашивает доступ к FTP. Что мне нужно настроить для Wordpress для загрузки без FTP?
Попробуйте добавить код в wp-config.php:
define('FS_METHOD', 'direct');
Если вы используете Ubuntu.
sudo chown -R www-data:www-data PATH_TO_YOUR_WORDPRESS_FOLDER
www-data
см. Здесь: codex.wordpress.org/Hardening_WordPress или здесь: stackoverflow.com/questions/18352682/…
"Всякий раз, когда вы используете панель управления WordPress для автоматической установки, обновления или удаления плагинов, WordPress должен вносить изменения в файлы в файловой системе.
Прежде чем вносить какие-либо изменения, WordPress сначала проверяет, имеет ли он доступ к прямой обработке файловой системы.
Если WordPress не имеет необходимых прав для непосредственного изменения файловой системы, вам будут предложены учетные данные FTP, чтобы WordPress мог попытаться выполнить все, что нужно, с помощью FTP.
Решение: Чтобы узнать, какой пользователь использует ваш экземпляр apache, создайте тест script со следующим содержимым:
<?php echo(exec("whoami")); ?>
Для меня это был демон, а не www-data. Затем исправьте разрешение:
sudo chown -R daemon /path/to/your/local/www/folder
<?php echo(exec("id")); ?>
которая даже предоставит вам групповые данные за пределами идентификатора пользователя: uid=5018(web27) gid=5012(client7) groups=5012(client7),5002(sshusers)
В OSX я использовал следующее, и он работал:
sudo chown -R _www:_www {path to wordpress folder}
_www - пользователь, которому PHP работает под Mac.
(Возможно, вам также понадобится chmod для некоторых папок. Я сделал это первым, и он не исправил его. Только когда я сделал команду chown, это сработало, поэтому я не уверен, команда chown или комбинация chmod и chown.)
Я изменил права собственности на папку wordpress на www-данные рекурсивно и перезапустил apache.
sudo chown -R www-data:www-data <folderpath>
Он работал как шарм!
WordPress запрашивает ваши учетные данные FTP, когда он не может получить доступ к файлам непосредственно. Обычно это вызвано тем, что PHP работает как пользователь apache (mod_php или CGI), а не пользователь, который владеет вашими файлами WordPress.
Это довольно нормально в большинстве общедоступных хостинговых сред - файлы хранятся как пользователь, а Apache работает как пользователь apache
или httpd
. Это на самом деле хорошая защита безопасности, поэтому эксплойты и хаки не могут изменять размещенные файлы. Вы можете обойти это, установив все файлы WP на безопасность 777, но это означает нет, поэтому я бы очень советовал вам. Просто используйте FTP, это автоматически посоветовал обходное решение с полным основанием.
Сначала перейдите в папку установки (например)
cd /Applications/XAMPP/xamppfiles/
Теперь нужно было изменить каталог htdocs:
sudo chown -R daemon htdocs
Введите пароль root при появлении запроса, затем завершите его вызовом chmod:
sudo chmod -R g+w htdocs
У нас была та же проблема, что и в случае большей проблемы. Предлагаемое решение
define('FS_METHOD', 'direct');
скрывает это окно, но тогда у нас все еще были проблемы с загрузкой тем и обновлений и т.д. Это связано с разрешениями, однако в нашем случае мы исправили проблему, перейдя от поставщика PHP mod_php к более безопасному поставщик PHP-приложений FastCGI.
Как упоминалось в Niels, это происходит потому, что пользователь процесса сервера не может писать в папку Wordpress.
Но вот что много статей не объясняет. Это владелец процесса php, а не процесс nginx. Если вы попытаетесь изменить владельца nginx, он не решит этого.
Чтобы решить эту проблему, попробуйте запустить ps aux
, чтобы узнать, кому принадлежит процесс php-fpm. Затем проверьте, что пользователь является тем же пользователем, что и владелец папки wordpress, или может, по крайней мере, написать ему. Если пользователь не может писать на него, вам нужно будет изменить разрешения и/или право собственности на папку; или поместить двух пользователей (владельца сервера и владельца папки Wordpress) в общую группу, которая может писать в папку; или изменить свойство пользователя "php.ini" пользователю, который может писать в папку.
Самый простой способ решить эту проблему - добавить в свой wp-config.php
define('FS_METHOD', 'direct');
define('FTP_BASE', '/usr/home/username/public_html/my-site.example.com/wordpress/');
define('FTP_CONTENT_DIR', '/usr/home/username/public_html/my-site.example.com/wordpress/wp-content/');
define('FTP_PLUGIN_DIR ', '/usr/home/username/public_html/my-site.example.com/wordpress/wp-content/plugins/');
FTP_BASE - это полный путь к папке "base" (ABSPATH) установки WordPress FTP_CONTENT_DIR - это полный путь к папке wp-содержимого установки WordPress. FTP_PLUGIN_DIR - это полный путь к папке плагинов установки WordPress.