Ошибка 500 в режиме suPHP: права на файлы и папки (chmod)

Что такое Internal Server Error в режиме suPHP и как правильно настроить права доступа.

500 Internal Server Error — код статуса HTTP, означающий, что сервер работает, но столкнулся с критической ошибкой, которая не позволяет обработать запрос.

Зачем нужен suPHP

В стандартном режиме mod_php Apache всегда работает от одного общего пользователя — nobody. Это небезопасно: неправильно настроенные права доступа могут позволить другим пользователям на том же сервере читать или даже изменять ваши файлы. Вдобавок, когда скрипты создают или изменяют файлы от имени nobody, эти файлы становится невозможно удалить или отредактировать через FTP.

suPHP решает обе проблемы, запуская каждый процесс от имени реального владельца аккаунта. Ваши файлы остаются вашими.

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

Права Применяется к Значение
644 Файлы Владелец может писать, остальные — только читать (по умолчанию)
444 Файлы Только чтение для всех, включая собственные скрипты
755 Папки Стандартные права для папок (по умолчанию, менять не нужно)

Несколько важных правил:

  • 755 должны быть установлены на папку /public_html/ваш_домен
  • Никогда не меняйте права на системные папки и файлы: stats, logs, .htpasswd и директорию /domains
  • Все изменения прав должны касаться только /public_html/ваш_домен и её содержимого
  • Никогда не выставляйте 666 или 777 на файлы и папки — скрипты с такими правами работать не будут, а безопасность вашего аккаунта окажется под угрозой

Примечание

При правах 644 запись в файлы разрешена только скриптам, работающим в рамках вашего аккаунта. Никто другой записать ничего не сможет. Для дополнительной защиты можно установить 444 — тогда даже ваши собственные скрипты не смогут изменять файлы, хотя это необязательно.

Частые причины ошибки 500 Internal Server Error

В режиме suPHP ошибка 500 почти всегда означает, что сервер заблокировал выполнение скрипта по одной из следующих причин:

  • На файл установлены права, отличные от 644 или 444 — например, 666
  • На папку установлены права, отличные от 755 — например, 777
  • В файле .htaccess присутствуют директивы, которые suPHP не поддерживает

Неподдерживаемые директивы .htaccess в режиме suPHP

suPHP не поддерживает PHP-директивы внутри .htaccess, в том числе php_flag, php_admin_flag, php_value и подобные. Если ваш .htaccess содержит что-то вроде:

php_flag register_globals On

или даже просто:

display_errors Off

Сервер немедленно вернёт 500 Internal Server Error. Удалите эти строки и настройте параметры PHP через пользовательский файл php.ini.

Помощь

Если у вас возникли вопросы или требуется помощь, пожалуйста, свяжитесь с нами через систему тикетов — мы обязательно вам поможем!

Обновлено:
Нужна помощь?Наши инженеры бесплатно помогут с любым вопросом за считанные минутыНаписать нам