EL-Script

General IT knowledge base

WordPress просит FTP-доступ при установке плагинов: настройка прав файлов и владельца

Пошаговая инструкция: wordPress просит FTP, важные параметры, проверка результата и типичные ошибки.

Коротко: WordPress просит FTP: Чтобы WordPress перестал запрашивать FTP-доступ, установите права 755 на все папки и 644 на файлы. Убедитесь, что владельцем файлов и каталогов является пользователь, от которого работает веб-сервер (обычно www-data или apache). В файле wp-config.php добавьте константу define('FS_METHOD', 'direct') — это заставит WordPress использовать прямой доступ к файловой системе.

Когда WordPress просит FTP-доступ при установке плагинов, большинство пользователей теряется в догадках. На самом деле система вовсе не требует обязательного FTP-сервера — она просто не может записать файлы напрямую из-за ограничений файловой системы. Чаще всего причина кроется в некорректных правах файлов или несовпадении владельца с пользователем веб-сервера. Разберёмся, как быстро исправить эту ошибку и вернуть контроль над сайтом.

Основные причины

Причина Что это значит
Неверные права на файлы и папки Если права на директории выставлены ниже 755 или на файлы ниже 644, серверный пользователь не может создавать или изменять файлы плагинов. WordPress блокирует прямую запись и запрашивает FTP-доступ.
Файлы принадлежат не тому пользователю Владельцем файлов WordPress должен быть тот же пользователь, от которого запущен веб-сервер (например, www-data, apache, nginx). Если после миграции или неудачного сброса прав владелец сменился, WordPress теряет доступ на запись.
Прямые методы записи отключены в конфигурации PHP Директивы open_basedir или отключенный allow_url_fopen могут ограничивать возможности PHP по прямой работе с файловой системой. В результате WordPress вынужден использовать FTP как альтернативу.
Активный безопасный режим PHP На старых версиях PHP включённый safe_mode блокирует попытки записи, если владелец скрипта не совпадает с владельцем файла. WordPress автоматически переключается на FTP-режим в таких условиях.
Предварительно заданные FTP-данные в wp-config.php Если в конфигурационном файле явно указаны константы FTP_HOST, FTP_USER и FTP_PASS, WordPress будет пытаться использовать FTP даже при возможности прямой записи. Система приоритетно использует заданный транспорт.
Недостаточные права на папку wp-content/uploads При установке плагинов WordPress также записывает временные файлы и мета-информацию. Если папка uploads или wp-content имеют слишком строгие разрешения, прямая запись становится невозможной.
Ограничения SELinux или AppArmor В серверных окружениях с активным SELinux или AppArmor политики безопасности могут запрещать веб-серверу запись в рабочие каталоги WordPress, даже если права выставлены верно. Необходима настройка контекста.

Что проверить сначала

  • Проверьте текущие права на папки WordPress командой find . -type d -exec stat -c '%a %n' {} ;
  • Узнайте, от какого пользователя работает ваш веб-сервер (например, ps aux | grep apache или ps aux | grep nginx)
  • Сравните владельца файлов WordPress с пользователем веб-сервера командой ls -l
  • Просмотрите файл wp-config.php на наличие констант FTP_* и FS_METHOD
  • Проверьте, не включён ли safe_mode в настройках PHP (файл php.ini или через phpinfo())
  • Убедитесь, что директория wp-content/uploads доступна для записи: ls -ld wp-content/uploads
  • Проверьте логи ошибок веб-сервера и WordPress (wp-content/debug.log) на наличие сообщений о правах
  • Временно отключите плагины кеширования и защиты, чтобы исключить их вмешательство
  • Проверьте, активен ли SELinux командой sestatus и изучите контекст файлов ls -Z
  • Оцените параметры PHP open_basedir и allow_url_fopen через phpinfo() или ini_get

Пошаговое решение

  1. Определите пользователя веб-сервера: выполните ps aux | grep -E 'apache|nginx|httpd' и запомните имя (часто www-data или apache).
  2. Измените владельца всех файлов WordPress: sudo chown -R пользователь:группа /путь/к/wordpress, где пользователь — тот самый www-data.
  3. Установите права 755 на все директории: find /путь/к/wordpress -type d -exec chmod 755 {} ;.
  4. Установите права 644 на все файлы: find /путь/к/wordpress -type f -exec chmod 644 {} ;.
  5. Откройте файл wp-config.php и добавьте строку define('FS_METHOD', 'direct'); перед строкой /* That's all, stop editing! */.
  6. Если прямой метод не помогает, удалите из wp-config.php все константы вида FTP_HOST, FTP_USER, FTP_PASS, чтобы WordPress не пытался использовать FTP принудительно.
  7. Проверьте права отдельно на папку wp-content/uploads: chmod 755 wp-content/uploads и chown пользователь:группа wp-content/uploads.
  8. Отключите safe_mode в php.ini: safe_mode = Off (только для старых версий PHP), затем перезапустите веб-сервер.
  9. Временно отключите плагины через переименование папки плагинов: переименуйте wp-content/plugins в plugins_backup, затем попробуйте установить любой минимальный плагин.
  10. При активном SELinux измените контекст каталогов: sudo chcon -R -t httpd_sys_rw_content_t /путь/к/wordpress/.
  11. Добавьте в wp-config.php явные FTP-учетные данные, если ни один из предыдущих шагов не помог: define('FTP_HOST', 'localhost'); define('FTP_USER', 'username'); define('FTP_PASS', 'password'); — это крайняя мера.
  12. Перезапустите веб-сервер: sudo systemctl restart apache2 или sudo systemctl restart nginx, чтобы применить все изменения прав и конфигурации.
AI-инструмент

Проверить ошибку WordPress

Введите ошибку WordPress, PHP, плагина, темы, REST API или кратко опишите проблему сайта.

FAQ

Почему WordPress требует FTP-доступ, если права на файлы 755 и 644?

Вероятно, владелец файлов не совпадает с пользователем веб-сервера. Даже корректные разрешения не помогут, если запись разрешена только владельцу (chmod 755 даёт запись только owner). Проверьте владельца командой ls -l и при необходимости измените на www-data.

Можно ли решить проблему без выставления прав 777?

Да, права 777 опасны и почти никогда не нужны. Достаточно 755 для папок и 644 для файлов с корректным владельцем. Если WordPress по-прежнему просит FTP, проблема в другом — скорее всего, в пользователе или константе FS_METHOD.

Как безопасно добавить FTP-данные в wp-config.php?

Добавьте строки после define('WP_DEBUG', false);: define('FTP_HOST', 'localhost'); define('FTP_USER', 'ваш_логин'); define('FTP_PASS', 'ваш_пароль');. Убедитесь, что файл wp-config.php не доступен публично, и используйте надёжные пароли.

Что делать, если пользователь веб-сервера отличается от моего SSH-пользователя?

Это нормально. Главное, чтобы все файлы WordPress принадлежали пользователю веб-сервера, а не вашему SSH-аккаунту. Используйте sudo chown -R www-data:www-data /путь/к/сайту, чтобы передать владение.

После смены владельца сайт перестал работать — в чём дело?

Скорее всего, вы использовали неправильную группу или изменили права на ключевые файлы, такие как index.php. Проверьте права: папки 755, файлы 644, а владелец — www-data или apache. Если сайт лежит в подпапке пользователя, убедитесь, что группа имеет доступ на чтение.

Поможет ли переустановка WordPress?

Обычно нет, потому что проблема связана с окружением сервера, а не с ядром. Переустановка не изменит владельца файлов или настройки PHP. Сначала проверьте права и FS_METHOD — это решает 95% случаев.

Итог

Запрос FTP-доступа при установке плагинов — это индикатор того, что WordPress не может писать напрямую в свою файловую систему. В большинстве ситуаций достаточно проверить и исправить права, назначить правильного владельца и добавить define('FS_METHOD', 'direct'). Если после этих шагов проблема сохраняется, стоит изучить серверные ограничения, такие как SELinux или open_basedir. Помните, что безопасность важнее удобства, поэтому избегайте прав 777 и не указывайте FTP-пароли в открытом виде. Регулярно аудируйте файловую систему сайта, чтобы подобные конфликты не повторялись.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *