Я всегда считал, что PHP работает лучше, если он установлен как модуль Apache, но недавно кто-то на местном форуме указал, что использование PHP в качестве CGI лучше с точки зрения безопасности. Я погуглил, и оказалось, что Dreamhost по умолчанию использует установку PHP для работы через CGI.. Теперь я немного озадачен.
Насколько я понимаю (я не системный администратор, а просто веб-разработчик), возникает проблема с правами пользователя, когда PHP установлен как модуль Apache. И есть проблема скорости при использовании PHP через CGI (или это было).
Какой в настоящее время рекомендуемый способ установки PHP? Как на виртуальном, так и на выделенном хостинге.
Запуск PHP в качестве модуля обычно более эффективен, но это означает, что все сценарии выполняются под одной и той же учетной записью пользователя (какой бы учетной записью ни был запущен Apache), что может создавать проблемы безопасности в общей среде.
CGI работает намного медленнее, поскольку запускает новые процессы PHP для каждого запроса, который в нем нуждается, но может быть настроен для запуска каждого сценария от имени пользователя, которому он принадлежит, что может быть гораздо более безопасным в общей среде.
FastCGI может быть более сложной задачей в настройке, но он приближается к скорости работы в качестве модуля PHP.
Вообще говоря, единственная причина, по которой вы хотите запускать CGI, - это общая среда.
Это позволяет иметь стиль suEXEC (см.: suPHP) расположение, при котором сценарии выполняются только как UID / GID владельца и имеют ограниченные права на что-либо еще в файловой системе.
В противном случае mod_php намного эффективнее и часто его легче отлаживать.
С FastCGI я могу перезапустить PHP без перезапуска сервера (просто убейте процессы PHP, сервер заметит это и немедленно перезапустит их).