Как диагностировать внутреннюю ошибку сервера (HTTP 500) со страницы PHP в IIS 7.5

Я пытаюсь получить пробную копию системы управления членством aMember, работающей на моей локальной машине разработки, которая представляет собой 64-разрядную версию Windows 7 с IIS 7.5. У меня есть MySQL 5.5.10 и PHP 5.3.6, последний я установил с помощью установочного пакета Windows. кажется в порядке.

В пакете aMember есть сценарий tester.php, который я запустил, и он дал результат «ОК», несмотря на то, что его вывод был полон сообщений об ошибках, связанных с Функция eregi() устарела. Затем я запустил сценарий setup.php, который, похоже, работал правильно. Мне потребовалось один или два экрана сбора, например. информацию для входа в MySQL, а затем сказал, что она завершена, и предложил мне ссылки на некоторые страницы администратора aMember. Ни одна из этих ссылок не работает, и щелчок по любой из них приводит к внутренней ошибке сервера (HTTP 500): возникла непредвиденная ситуация, когда сервер пытался выполнить запрос.

Что я могу сделать для дальнейшей диагностики этой ошибки, за исключением размещения большого количества диагностических записей на самих php-страницах? Инструменты в моем распоряжении — это Aptana Studio и Visual Studio, хотя я сомневаюсь, что последний будет здесь полезен. Я зарегистрировал проблему в службе поддержки aMember, которая быстро запросила журналы моего сервера, а затем исчезла.


person ProfK    schedule 30.03.2011    source источник
comment
В предыдущих версиях PHP, запущенный через FastCGI (как это было бы в IIS), будет возвращать внутреннюю ошибку сервера, когда до начала вывода возникает неуловимая фатальная ошибка. Скорее всего, в файле, к которому вы обращаетесь (или в одном из файлов, которые он includes) есть серьезная синтаксическая ошибка. Я не уверен, где IIS хранит журнал ошибок, но он должен предоставить вам больше информации из самого PHP.   -  person Charles    schedule 30.03.2011
comment
это только я или весь этот вопрос можно упростить до: я получил ошибку HTTP 500 в IIS / PHP, как мне получить более подробную информацию об ошибке? Этот вопрос в основном роман   -  person Kellen Stuart    schedule 13.10.2017


Ответы (2)


Моим первым портом захода здесь было бы включить отслеживание неудачных запросов:

Устранение неполадок с невыполненными запросами с помощью трассировки в IIS 7
Устранение неполадок с ошибкой Запросить отслеживание

Я также с подозрением отношусь к вашей установке PHP. Как правило, никогда не используйте установщики. Кажется, они никогда не поступают правильно.

Я бы разорвал вашу установку PHP и начал с нуля, выполнив следующие действия:

Использование FastCGI для размещения Приложения PHP в IIS 7

FastCGI + небезопасная для потоков сборка PHP (5.2 или 5.3) — это окончательный способ установки и настройки PHP на IIS7.

person Kev    schedule 30.03.2011
comment
Спасибо @Kev, +1 за неудачную трассировку запроса. Выглядит очень мощно, хотя в данном случае это не решило проблему. Смотрите мой ответ для реальной проблемы. - person ProfK; 03.04.2011

Пробная версия программного обеспечения aMember использует закодированный PHP, для декодирования которого требуется IonCube. Я установил это, но, похоже, установка не удалась, так как последующая установка устранила проблему. Сначала я был в тупике, потому что после установки IonCube я запустил тестовый скрипт aMember, который сообщил мне, что IonCube установлен. Служба поддержки ответила, что:

К сожалению, тестовый скрипт неправильно обрабатывает ситуацию с динамической загрузкой. PHP с версии 5 не позволяет динамически загружать библиотеки, если эти библиотеки не находятся в папке php lib. Поэтому вам нужно установить IonCube или Zend в php.ini сервера'

Я не знаю, почему это не может создать предупреждение в тестовом сценарии.

person ProfK    schedule 03.04.2011