Тайм-аут сообщений HTTP анонимного посетителя интегрированного конвейера PHP / IIS - PullRequest
1 голос
/ 26 января 2011

Я настроил PHP для работы под FastCgi на IIS7 на Windows Server 2008 в разделе Аутентификация с помощью форм / IIS Integrated Pipeline. PHP и даже Drupal отлично работают для аутентифицированных пользователей. Однако для анонимных запросов все сообщения PHP зависают до истечения времени ожидания PHP, а затем возвращают ошибку 500.0. Ошибка не появляется в журнале, и ошибка, возвращенная на экран, не слишком полезна, даже если включено подробное ведение журнала:

 Internet Information Services 7.5
 Error Summary HTTP Error 500.0 - Internal Server Error C:\Program Files (x86)\PHP\php-cgi.exe - The FastCGI process exceeded configured request timeout Detailed Error Information
 Module        FastCgiModule
 Notification  ExecuteRequestHandler
 Handler       PHP_via_FastCGI Error
 Code          0x80070102 
 Requested URL http://localhost/application/test.php
 Physical Path D:\Websites\application\test.php 
 Logon Method  Anonymous 
 Logon User    Anonymous

Все аутентифицированные запросы работают нормально, и во-вторых, я меняю тип аутентификации web.config с «Forms» на «Windows» или «None», работают анонимные посты PHP. Но это не решает проблему, потому что тогда никто не аутентифицирован. ASP.Net и Classic ASP Post работают в той же конфигурации, что и анонимные сообщения PHP.

Лишь несколько вещей, которые я пробовал, включают ...

Добавлен и удален модуль FormsAuthentication в локальном файле web.config (хотя он уже унаследован):

<modules>
    <remove name="FormsAuthentication" />
    <add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" preCondition="" />
</modules>

Явно разрешенный доступ (хотя уже унаследованный):

<authorization>
    <add accessType="Allow" users="*" verbs="GET, POST" />
</authorization>

Подправлены настройки PHP.ini, в настоящее время установлено:

default_socket_timeout = 60
upload_tmp_dir="C:\Windows\Temp"
session.save_path="C:\Windows\Temp"
log_errors = On
error_log="C:\Windows\temp\php-errors.log"
cgi.force_redirect=0
fastcgi.impersonate=1
cgi.fix_pathinfo=1
fastcgi.logging=0
max_execution_time=30
extension_dir="C:\Program Files (x86)\PHP\ext"
error_reporting = E_ALL & ~E_NOTICE
display_errors = On
max_input_time = 60
memory_limit = 128M
post_max_size = 10M   

Изменено удостоверение пула приложений с ApplicationPoolIdentity на NetworkService на учетные записи администратора. Все дали одинаковое поведение.

Я выполнил настройки PHP.ini и web.config, рекомендованные для MSDN (http://msdn.microsoft.com/en-us/magazine/cc135973.aspx) и IIS.Net (http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis-7/).

)

Когда я говорю, что простой пост PHP терпит неудачу, я имею в виду простой:

<form action="test.php" method="post">
   <input type="text" name="testpost" />
   <input type="submit" value="postit" />
</form>
<?php if(isset($_POST['testpost'])) { ?>
   Posted: <?php echo($_POST['testpost']) ?>
<?php } else { ?>
   Waiting for post...
<?php } ?>

Единственная ссылка, которую я нашел на эту проблему в Интернете, - это оставленный без ответа вопрос в Экспертах Exchange (http://www.experts -exchange.com / Software / Server_Software / Web_Servers / Microsoft_IIS / Q_26706716.html).

Я новичок в PHP и IIS7, поэтому после нескольких недель работы с этим включением и выключением я подумал, что наконец пришло время спросить, что за простая вещь я должен пропустить.

У кого-нибудь есть идеи?

Спасибо!

Ответы [ 2 ]

1 голос
/ 18 февраля 2011

Вы пытались установить пул приложений в "классический" режим управляемого конвейера вместо встроенного?

0 голосов
/ 13 июня 2012

Проблема, обнаруженная моим коллегой, связана с нашим web.config. В частности, закомментировав следующую строку, POST волшебным образом начал работать с PHP внутри виртуального каталога на сайте .NET (поэтому мы можем использовать только аутентификацию .NET).

<trace enabled="true" requestLimit="50000000" pageOutput="false" traceMode="SortByTime" localOnly="true"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...