PHP v5.2.8
Windows Server 2003 с пакетом обновления 2 (IIS 6, я считаю, хотя я не могу найти версию # в диспетчере IIS)
Полная ошибка:
"CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers."
Я установил стек WAMP с bitnami.org, и страницы PHP работают совершенно нормально при посещении через Apache, который у меня работает на порту 8888. Однако, из-за конфигурации сети и причин брандмауэра, я должен заставить это работать сервер IIS на порту 80. Существуют другие веб-сайты, работающие на порту 80, включая веб-сайт по умолчанию, который нельзя изменить. К сожалению, мне также нужно, чтобы это работало как виртуальный каталог, такой как www.myserver.com/phpapp, а не как его собственный веб-сайт, такой как phpapp.myserver.com. Причина этого в том, что брандмауэр, вне моего контроля, требует новых правил сквозного доступа, чтобы разрешить доступ к новому поддомену.
Этот тот же стек WAMP от Bitnami отлично работает на другом сервере, когда приложение php работает как его собственный "сайт" в IIS, поскольку я могу добавить новый фильтр PHP ISAPI - но эта вкладка / опция недоступна в виртуальных каталогах .
Я установил php «Расширение веб-службы» в диспетчере IIS. Я попробовал и php-cgi и php5isapi.dll в расширениях веб-сервиса. Кроме того, я пробовал оба из них как «расширение приложения» в соответствии с «конфигурацией» веб-сайтов.
Я также пробовал сочетания / совпадения php5isapi.dll и php-cgi.exe для «расширений веб-служб» и сопоставлений расширений «конфигурации» веб-сайтов.
Я попытался настроить несколько вещей в php.ini (в том числе убедиться, что doc_root пуст). Однако, как я уже упоминал ранее, этот веб-сайт работает нормально, когда посещается через порт Apache. IIS указывает на точно такой же каталог.
Что на земле вызывает эту ошибку? Я потратил довольно много времени на поиск в Интернете, и, похоже, эта ошибка появляется по нескольким причинам. Если бы у кого-то было приложение PHP, которое делало необработанную запись в ответ без предварительной записи заголовков, это вызвало бы эту ошибку. Некоторые приложения PHP могут вызывать эту ошибку, когда возникает ошибка PHP, приводящая к неправильному перенаправлению.
Мои журналы ошибок php отсутствуют в действии. В моем php.ini у меня есть
error_reporting = E_ALL
display_errors = On
log_errors = On
display_startup_errors = On
error_log = "c:\temp\php.error.log"
Но в c: \ temp никогда не бывает файла журнала. Я также попытался избежать косой черты и пробовал косую черту в пути, и файл журнала никогда не показывался.
Опять же, я вынужден упомянуть, что все это прекрасно работает через apache, поэтому не похоже, что сам PHP работает из-за какой-то странной конфигурации (хотя я не могу найти файл журнала) это тот же php.ini, который я использую на другом компьютере, где он нормально работает через IIS (где приложение php - это собственный «сайт» вместо виртуального каталога).
Я не знаю, какую другую информацию предоставить, - но я в полном здравом уме, после того, как сражаюсь с этим в течение нескольких дней. Если я добавлю HTML-страницу, я смогу зайти в нее через IIS в этом виртуальном каталоге. Что может быть причиной этого?
Приложение, которое я пытаюсь запустить - vBulletin. Не уверен, что это имеет большое значение, кроме как поверить в правильность PHP в приложении.