PHP

Описание ошибки 500. Права на файлы/папки (chmod). Всё о suPHP

500 (Internal Server Error, Внутренняя ошибка сервера) — код статуса в протоколе HTTP, сообщающий, что серверная программа работает, но всречается с серьёзными внутренними ошибками, препятствующими нормальной обработке запроса клиента. Ошибка должна быть исправлена на стороне сервера. ВНИМАНИЕ! Информация по chmod на файлы папки, необходимые для работы Вашего сайта.

Всё о режиме работы suPHP. Chmod на файлы/папки

В данный момент на всех наших серверах виртуального хостинга используется режим работы suPHP вместо mod_php.
Основная причина перехода на данный режим - его более высокая безопасность и удобство.

В стандартном режиме mod_php веб-сервер Apache запущен и всегда работает от одного пользователя - nobody. это является далеко не самым безопасным решением поскольку ошибка в правах доступа позволит другим пользователям читать Ваши файлы или даже делать в них изменения. suPHP страхует от этой проблемы, поскольку теперь каждый процесс запускается от конкретного пользователя (например если Ваш логин - username, то процессы для Вашего сайта будут запускаться только от него). Кроме этого, данный режим работы решает проблему когда скрипты делают изменения в файлах и после этого файлы нельзя удалить/изменить через FTP поскольку они имеют владельца nobody.

Примечания по работе:

Новые права доступа:

* 644 - запись в файл разрешена (по умолчанию)
* 444 - запись в файл запрещена (только чтение и исполнение)
* 755 - права доступа на папки (по умолчанию, менять не требуется)
755 - должны стоять на папку domains/ваш_домен/public_html/ (проверьте стоят ли) а также НЕ ИЗМЕНЯЙТЕ права на остальные системные папки/файлы (stats, logs, .htpasswd и на папку /domains) этого делать НЕ нужно. Все изменения должны касаться только папки domains/ваш_домен/public_html и её содержимого. Ни в коем случае не выставлятйе chmod 666/777 на файлы/папки. Это может угрожать безопасности Вашего аккаунта, а также скрипты в любом случае с этими правами работать НЕ будут. Потому в целях дополнительной защиты и была произведена настройка режима suPHP вместо стандартного mod_php

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

Таким образом при установке скриптов не требуется менять права доступа, даже если в инструкции к скрипту написано что их нужно изменить. Просто пропускайте пункт смены прав доступа CHMOD.

C чем может быть связана ошибка Internal Server Error?

Данная ошибка чаще всего означает что сервер заблокировал обращение к скрипту, это может быть по следующим причинам:

* Вы выставили права доступа на файл(ы) отличающиеся от 644 или 444, сервер блокирует выполнение скрипта в целях безопасности (например - выставили CHMOD 666)
* Вы выставили права доступа отличающиеся от 755 на папки(у). (например - выставили CHMOD 777)
* Найдены не поддерживаемые директивы в файле .htaccess

В режиме suPHP не поддерживается установка директив php_flag, php_admin_flag, php_value и прочих, которые изменяют какие-либо параметры PHP окружения.

Для примера, если у Вас в .htaccess будет присутствовать запись вида:

Код
php_flag register_globals On


или например

Код
display_errors Off


Сервер вернёт ошибку 500 (Internal Server Error).


Для управления данными параметрами, создайте файл php.ini в корне вашего скрипта.

В этом файле пропишите строчку с директивой, например:
register_globals = on

Регистр букв не имеет значения. Права на файл (CHMOD), как правило, "644".

Для того, что-бы данная директива распространялась и на вложенные каталоги - создайте файл .htaccess рядом с созданным файлом pho.ini.

В этом файле пропишите строчку:
suPHP_ConfigPath /home/ЛОГИН_ВАШЕГО_АККАУНТА/public_html/php.ini

Вы можете иметь несколько. htaccess файлов в различных каталогах для управления вашим сайтом, поэтому убедитесь, что каждый указывает на соответствующий файл php.ini.

Если вы поместите файл php.ini в /home/ЛОГИН_ВАШЕГО_АККАУНТА/, т.е. выше каталога public_html этого достаточно.

Однако, если файл был установлен в любом каталоге или ниже /home/ЛОГИН_ВАШЕГО_АККАУНТА/public_html/, то любой браузер сможет просмотреть этот файл, но если добавить следующие строки .htaccess файл

<Files php.ini>
order allow,deny
deny from all
</Files> 

То этот файл станет недоступным для просмотра.

Для просмотра установленных параметров в php.ini создайте файл.php с параметром:
<?phpinfo();?>

Вернуться Назад