Ошибка 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.
Помощь
Если у вас возникли вопросы или требуется помощь, пожалуйста, свяжитесь с нами через систему тикетов — мы обязательно вам поможем!