Вопрос или проблема
WordPress требует от меня FTP-данные, когда я пытаюсь удалить или установить плагины. Я знаю, что это связано с правами доступа, но мне не удается разобраться. У меня есть пользователь системы Linux XYZ, а apache2 работает от имени www-data. Это работает:
sudo chown www-data:www-data -R /path/to/wordpress
sudo chmod 700 -R /path/to/wordpress
Но это небезопасно. Первоначально запланированная конфигурация была:
sudo chown XYZ:www-data -R /path/to/wordpress
sudo chmod 750 -R /path/to/wordpress
sudo chmod 770 -R /path/to/wordpress/wp-content
Согласно документации WordPress, wp-content — это единственная папка, к которой веб-сервер должен иметь доступ на запись. Она включает папки плагинов и тем.
Но это не работает. Я провел несколько часов, исследуя онлайн, но ничего не помогло, и я не знаю, что еще попробовать. Какие правильные права доступа, чтобы разрешить автоматические обновления и установку плагинов, не давая веб-серверу доступа на запись ко всему?
По какой-то причине следующее не работает:
sudo chown XYZ:www-data -R /path/to/wordpress
sudo chmod 770 -R /path/to/wordpress
Я думал, что это идентично первой версии выше, дающей www-data доступ на запись ко всему. Как это возможно??
Для решения этой проблемы просто отредактируйте свой файл конфигурации и добавьте нижеуказанный код:
define('FS_METHOD', 'direct');
Спасибо
Ответ или решение
Почему WordPress запрашивает FTP-учетные данные при удалении плагина?
Если WordPress запрашивает у вас FTP-учетные данные при удалении или установке плагинов, это, как вы правильно заметили, связано с правами доступа. Давай разберем вашу ситуацию и обсудим, как можно решить эту проблему, не подвергая риску безопасность вашего сайта.
Понимание прав доступа
WordPress требует определенных прав доступа к файлам и директориям, чтобы он мог автоматически производить установку и обновление плагинов и тем. Когда серверная сторона (в данном случае Apache, работающий под пользователем www-data
) не имеет достаточных прав на запись в необходимые каталоги, WP запрашивает FTP-учетные данные для продолжения операции.
В вашем случае вы хотите, чтобы сервер имел доступ к нужным каталогам, а пользователю XYZ
было предоставлено столько же прав, сколько необходимо, чтобы избегать несанкционированного доступа к остальным частям сайта.
Разбор текущих настроек
-
Правильные настройки прав доступа:
Используя команды:sudo chown XYZ:www-data -R /path/to/wordpress sudo chmod 750 -R /path/to/wordpress sudo chmod 770 -R /path/to/wordpress/wp-content
Вы предоставляете писательский доступ группе
www-data
к директорииwp-content
, однако, по вашему описанию, это не работает. Вероятно, проблема заключается в том, как вы настраиваете права доступа к остальным директориям и файлам внутри WordPress. -
Отдельные права для текущего пользователя:
Использованиеchmod 700
для всей директории – это чрезмерно строгая политика. Вам нужно изменить права для отдельных директорий.- Например, можно задать доступ
755
для всех каталогов, чтобы дать серверу возможность их просматривать и выполнять скрипты, но при этом уменьшить возможность записи в полях, где это не нужно:sudo find /path/to/wordpress -type d -exec chmod 755 {} \;
- Для файлов можно установить права
644
:sudo find /path/to/wordpress -type f -exec chmod 644 {} \;
- Например, можно задать доступ
-
Прямой доступ к файловой системе:
Другим возможным вариантом является редактирование файлаwp-config.php
и добавление следующей строки:define('FS_METHOD', 'direct');
Эта настройка укажет WordPress использовать прямой метод доступа к файловой системе, тем самым устраняя необходимость в FTP.
Подводя итоги
Для того чтобы WordPress мог управлять плагинами и темами без необходимости ввода FTP-учетных данных, убедитесь, что вы правильно настроили права доступа:
- Дайте группе
www-data
доступ к каталогам, необходимым для работы (например,wp-content
). - Установите доступ для каталогов на
755
, а для файлов – на644
. - Рассмотрите возможность добавления конфигурации для прямого доступа к файловой системе.
Соблюдая эти рекомендации, вы сможете обеспечить возможность автоматического обновления и установки плагинов, не поддавая весь сайт риску. Не забывайте регулярно проверять права доступа и обновлять настройки безопасности вашего WordPress.