Avatar ·

Правильные права доступа к файлам для WordPress на PHP

Всем привет! Я новичок в PHP и WordPress, и у меня возникла серьёзная проблема с правами доступа к файлам на сервере. Я развернул свой первый сайт на WordPress, но через неделю столкнулся с ошибками: не могу обновить плагины, темы, а иногда сайт просто выдает белую страницу. Хост-провайдер сказал, что проблема в неправильных правах chmod. Сейчас у меня всё стоит на 777, потому что я хотел, чтобы работало, но это же небезопасно? Я читал, что для папок нужно 755, а для файлов 644, но после этого перестали работать некоторые функции, например, загрузка изображений через админку. Вот пример кода из моего wp-config.php, где я временно закомментировал некоторые настройки: ```php define('WP_DEBUG', true); // define('WP_DEBUG_LOG', true); // define('WP_DEBUG_DISPLAY', false); ``` Подскажите, какие именно права нужно выставить: 1. Для корневой папки WordPress 2. Для папки wp-content 3. Для папки wp-admin 4. Для файлов .htaccess и wp-config.php Я работаю на обычном shared-хостинге, без доступа к root. Заранее спасибо за помощь! <<>>

Правильные права доступа для WordPress: полное руководство

Вы правы: права 777 — это грубейшая ошибка безопасности. Однако просто выставить 755/644 тоже недостаточно, потому что WordPress требует гибкого подхода. Давайте разберёмся по порядку.

Общее правило (безопасный минимум)

  • Файлы (php, js, css, png, jpg): 644 (владелец — чтение+запись, группа — чтение, остальные — только чтение)
  • Папки (директории): 755 (владелец — чтение+запись+выполнение, группа и остальные — чтение+выполнение)

Особые случаи для WordPress

WordPress часто работает в режиме, где веб-сервер (обычно www-data или nobody) и ваш FTP-пользователь — разные учётные записи. Поэтому некоторые папки требуют прав на запись для веб-сервера:

# Корневая папка WordPress
chmod 755 /var/www/wordpress
# Файлы в корне (index.php, wp-config.php и т.д.)
chmod 644 /var/www/wordpress/*.php
# wp-config.php — особо важный файл, можно 600 или 440
chmod 600 /var/www/wordpress/wp-config.php

# Папка wp-content и всё внутри
chmod 755 /var/www/wordpress/wp-content
chmod 755 /var/www/wordpress/wp-content/themes
chmod 755 /var/www/wordpress/wp-content/plugins
chmod 755 /var/www/wordpress/wp-content/uploads
# Для папки uploads может потребоваться 775, если веб-сервер — не владелец
chmod 775 /var/www/wordpress/wp-content/uploads

# .htaccess — обычно 644, но если Apache не может писать, то 664
chmod 644 /var/www/wordpress/.htaccess

# Папки wp-admin и wp-includes — только чтение
chmod 755 /var/www/wordpress/wp-admin
chmod 755 /var/www/wordpress/wp-includes

Почему 777 — это плохо?

Права 777 означают, что любой пользователь сервера (включая потенциально вредоносные скрипты) может читать, писать и выполнять ваши файлы. Если злоумышленник загрузит shell-скрипт в папку uploads, он получит полный контроль над сайтом.

Как определить правильного владельца

Выполните в SSH или через файловый менеджер:

# Узнать владельца файлов
ls -la /var/www/wordpress
# Обычно это user:group (например, myuser:www-data)
# Если владелец — myuser, а группа — www-data, то:
chown -R myuser:www-data /var/www/wordpress
chmod -R 755 /var/www/wordpress
find /var/www/wordpress -type f -exec chmod 644 {} \;
# Но для wp-content/uploads оставляем 775
chmod 775 /var/www/wordpress/wp-content/uploads

Проверка через PHP

Добавьте этот код в functions.php вашей темы для диагностики (потом удалите!):

add_action('admin_notices', function() {
    $uploads = wp_upload_dir();
    $path = $uploads['basedir'];
    if (is_writable($path)) {
        echo '<div class="notice notice-success">Папка uploads доступна для записи</div>';
    } else {
        echo '<div class="notice notice-error">Папка uploads НЕ доступна для записи!</div>';
    }
});

Итоговая таблица

РесурсПраваПримечание
Корень WordPress755Владелец: ваш FTP-пользователь
wp-config.php600 или 440Никогда не ставьте 777!
wp-content755Рекурсивно для всех подпапок
wp-content/uploads775Веб-сервер должен иметь право писать
wp-content/plugins755Для обновлений может потребоваться 775
.htaccess644Если не работает — попробуйте 664
Все .php файлы644Кроме wp-config.php

После установки прав обязательно проверьте работу админки. Если что-то сломалось — временно поднимите права на конкретную папку, но никогда не ставьте 777 на всё подряд.

<<>>

Альтернативный подход: через пользовательские группы

Если у вас shared-хостинг без доступа к SSH, используйте файловый менеджер в панели хостинга (cPanel, DirectAdmin). Вот пошаговый план:

  1. Создайте пользователя FTP с доступом к корню сайта.
  2. Войдите в файловый менеджер как этот пользователь.
  3. Выделите все файлы в корне WordPress → нажмите "Изменить права".
  4. Установите:
    • Файлы: 644 (владелец — чтение/запись, группа — чтение, остальные — чтение)
    • Папки: 755 (владелец — чтение/запись/выполнение, группа — чтение/выполнение, остальные — чтение/выполнение)
  5. Для папки wp-content/uploads установите 755, а если не работает загрузка — 775.
  6. wp-config.php — 644 (на некоторых хостингах 600 приводит к ошибке, так что оставьте 644).

Если после этого админка просит FTP-данные при обновлении, добавьте в wp-config.php:

define('FS_METHOD', 'direct');

Это заставит WordPress использовать прямой доступ к файлам через веб-сервер. Но убедитесь, что папки wp-content/themes и wp-content/plugins имеют права 755 (или 775 для обновлений).

Важно: Никогда не используйте права 777 на production-сайте. Если что-то не работает — ищите конкретную папку, которой не хватает записи, а не лейте 777 на всё.