Сервер Windows: форма PHP отправляет сообщения, но возвращает 500 - заголовки показывают только asp.net - PullRequest
2 голосов
/ 07 января 2011

Итак, у нас установлен PHP 5.3.2 на Windows 2008 R2 Server. Файл PHP.ini загружен, с этой стороны все выглядит хорошо. Мы также используем IIS 7.5 и ISAPI_Rewrite. У нас установлена ​​CMS на основе PHP, и она запускает денди.

Проблема заключается в размещении переменных. Пример:

У нас есть страница контактов: http://example.com/contact с формой, в которой публикуются переменные при отправке через PHP.

Но тогда, когда пользователь отправляет форму, кажется, что любая страница с переменными POSTed (например, эта) в итоге возвращает ошибку 500.

РЕДАКТИРОВАТЬ У меня есть еще одна идея: не уверен, может ли это иметь отношение к файлам .htaccess. Этот сервер выдает 500 ошибок для всего.

Используемая нами CMS пропускает все через файл index.php, поэтому наш файл .htaccess удаляет index.php из URL, чтобы URL-адреса были чистыми.

RewriteEngine on 
RewriteCond $1 !^(images|documents|admin|themes|favicon\.ico|robots\.txt|index\.php) [NC]
RewriteRule ^(.*)$ /index.php/$1 [L] 

Заголовки для публикуемой страницы:

Request URL:http://domain.com/
Request Method:POST
Status Code:500 Internal Server Error

**Request Headers**
Accept:application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png;q=0.5
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Content-Type:application/x-www-form-urlencoded

Я мог бы быть далеко отсюда, но есть ли какое-то регулярное выражение или настройка, которые я пропустил в IIS, что любой файл .php с переменными post просто не назначен для захвата PHP?

* РЕДАКТИРОВАТЬ / ОБНОВИТЬ * Я RDC'd в компьютер для тестирования, а также включил подробный отчет об ошибках. Веб-сайт с чистыми URL-адресами работает нормально до отправки формы.

Server error: HTTP Error 500.0 - Internal Server Error
The FastCGI process exceeded configured activity timeout (it took a while)
Handler: PHP5

А потом в логах:

2011-01-12 16:57:56 10.64.181.170 POST /index.php/ - 80 - 10.64.181.170 Mozilla / 4.0 + (совместимый; + MSIE + 7.0; + Windows + NT + 6.1; + WOW64; + Trident / 4.0; + SLCC2; + .NET + CLR + 2.0.50727; + .NET4.0C; +. NET4.0E) 500 0 258 82850

- Стеф

Ответы [ 2 ]

0 голосов
/ 07 июня 2011

Я столкнулся с этим сегодня на сайте клиента.

Этот клиент использовал UMBRACO в качестве своей CMS и имел большой файл web.config в корне сайта.

Мой фонв Linux, а не в Windows, однако после случайного удаления строк из ружья из web.config я обнаружил, что проблемная строка выглядит примерно так:

    <trace enabled="true" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />

Если у вас все еще есть эта проблема, проверьте, нев корне сайта есть файл web.config со строкой, похожей на эту.Комментируя это, казалось, добились цели, я не уверен, для чего это используется.

0 голосов
/ 08 января 2011

IIS изначально не поддерживает файлы .htaccess и правила перезаписи. Чтобы обойти это нужно:

  1. Установка Перезапись URL для IIS
  2. В диспетчере IIS для вашего сайта дважды щелкните URL Rewrite
  3. Нажмите Правила импорта
  4. Найдите файл .htaccess на диске
  5. Нажмите Импорт
  6. Просмотрите и нажмите Применить

Правила перезаписи IIS сохраняются в виде файла web.config XML. Преобразование работает «из коробки» для большинства правил перезаписи.

...