Я запускаю IIS6 на Windows Server 2k3, и в настоящее время PHP установлен как модуль ISAPI. Мы собираемся обновить нашу среду до PHP 5.3.0, и это заставило меня задуматься, стоит ли мне придерживаться модуля ISAPI или есть причина, по которой CGI лучше подходит.
У нас есть один веб-сервер для нашей организации, и нам не нужно беспокоиться о безопасности, связанной с виртуальным хостингом; у нас есть несколько веб-сайтов, но все они принадлежат нам.
Есть ли преимущество в использовании одного метода перед другим? Еще один безопасен? Это просто вопрос предпочтений?
РЕДАКТИРОВАТЬ: PHP 5.3.0 отказался от поддержки ISAPI, поэтому вам необходимо установить его через FastCGI. Из Руководство по миграции PHP:
Поддержка модуля ISAPI прекращена. Вместо этого используйте улучшенный модуль FastCGI SAPI.
Я лично считаю, что для незанятых веб-сайтов (например, от 0 до 25 пользователей в среднем) ISAPI работает нормально, я не нашел особых преимуществ в использовании CGI вместо ISAPI.
Однако, если у вас загруженный веб-сайт или вы не против поработать над ним, я рекомендую взглянуть на FastCGI, поскольку теперь вы можете получить его на Win2003 IIS6, он работает НАМНОГО быстрее при больших нагрузках.
В Небезопасный для потоков Бинарный файл PHP CGI для Windows должен обеспечить максимальную стабильность, совместимость и производительность, поскольку:
Однако производительность и стабильность уязвимы, когда двоичный файл CGI используется в многопоточных средах, таких как IIS. Поэтому большинство людей начали использовать относительно новый FastCGI расширение, которое доступно для IIS 5.1 / IIS 6.0 как загружаемое и связанное с IIS7.
Это руководство объясняет, как установить и настроить PHP CGI с расширением Microsoft FastCGI.
Второй вариант - использовать PHP ISAPI, но обязательно (i) используйте Thread-Safe сборки (ii) используйте стабильные и проверенные расширения - в противном случае PHP ISAPI может дать сбой и также вывести из строя IIS. Замечание: безопасность протектора в PHP подобна ручному тормозу, который всегда включен; некоторые даже говорят, что это миф.
Обновление: PHP ISAPI больше не поставляется, поэтому вопрос о ISAPI и CGI больше не является вопросом. Рекомендуется FastCGI.
CGI очень плохо работает в IIS по сравнению с моделью ISAPI (поскольку создание новых процессов, как работает CGI, очень «дорогое» в операционных системах Windows NT). В современных версиях IIS многие «проблемы» ISAPI (утечки памяти, необходимость «повторного использования» приложений и т. Д.) «Исправлены», и приложения на основе ISAPI в целом работают очень хорошо и просты в управлении. Любые причины, по которым вы сочтете, что приложения на основе CGI «лучше», чем приложения на основе ISAPI, вероятно, были написаны в стиле IIS 4.0 или IIS 5.0.