suPHP: запуск php-скриптов под Apache

Эта утилита позволяет выполнять скрипты PHP с привелегиями его владельца.

Столкнулся я с ней, используя Apache 2.x. Для него есть модуль mod_suphp. Пользу этой технологии переоценить трудно. Как известно, сервер Apache запускается от имени отпределенного пользователя и группы (у меня это www-data:www-data, и дальше я буду опирать на эти имена). А соответственно и php скрипты выполняются от имени этого пользователя в не зависимости, от того, для какого виртуального сервера это происходит.

Это не является проблемой, до тех пор, пока ваши скрипты не пишут, и тем более не создают никакие файлы.

Для того что бы php скрипт мог писать в файл, можно включить пользователя www-data в группу, которой принадлежит файл, и соответственно разрешить запись членам группы. То же справедливо и для каталогов.

Подводные камни показываются когда создаётся новый файл. Владельцем созданного файла будет пользователь www-data.

Если же воспользоваться модулем mod_suphp, то php скрипты будут запускаться от имени владельца скрипта, и соответственно новые файлы и каталоги будут принадлежать этому же владельцу.

При умолчальных настройках доступ на запись в файл скрипта должен иметь только владелец, иначе будет происходить ошибка сервера. Но, всё можно исправить в файле конфигурации, разрешив соответствующие параметры:

; Security options
allow_file_group_writeable=false
allow_file_others_writeable=false
allow_directory_group_writeable=false
allow_directory_others_writeable=false

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

Хочу отметить, что всё это я проделывал на тестовом сервере поднятом для экспериментов и отладки сайта. Полагаю, что на профессиональных интернет-хостингах существуют более продвинутые решения для комфорта клиентов.

Так же следует обратить внимание, что бы конфигурационном файле /etc/suphp/suphp.conf. Был правильно установлен параметр docroot. Он определяет в какой директории и поддиректориях могут находится php-скрипты.

Ivan A-R 04.05.2006 01:23