Назад | Перейти на главную страницу

PHP как CGI или модуль Apache?

Я всегда считал, что 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, сервер заметит это и немедленно перезапустит их).