Назад | Перейти на главную страницу

Почему любая страница .php выдает ошибку 404 на сервере 2008 с IIS 7.0?

Я использую FastCGI для настройки PHP. Я выполнил инструкции на сайте iis.net. Я добавил отображение обработчика, отредактировал файл php.ini, как указано. Ничего из этого не работает, я просто получаю сообщение об ошибке 404.0: «Страница, которую вы ищете, удалена», хотя физический путь, отображаемый на странице ошибки, существует. Попробовав этот ручной метод (разархивирование php, добавление сопоставления дескрипторов вручную и т. Д.), Я удалил все и попробовал установить установщик веб-платформы (тьфу), но у меня все еще есть та же проблема.

Еще немного информации:
На странице подробных ошибок указано, что обработчик - это мой обработчик StaticFile (а не PHP FastCGI). Он также дает код ошибки 0x80070002

Когда я смотрю журналы, он показывает "GET /php.ini" как выдающий ошибку 404. Почему IIS это ищет?

Просто хотел добавить глупый ответ, чтобы кто-то еще нашел эту проблему с той же проблемой. «Товарищ» создал на сервере тестовый файл. Он получал ошибку 404. Случилось то, что окна скрывали расширения файлов, поэтому файл на самом деле назывался index.php.txt ... Не смешные 30 минут.

Когда я получил это сообщение об ошибке, я заметил, что у меня даже не было php-cgi.exe файл в C:\Program Files\PHP каталог.

Другой полезный метод, который я обнаружил, заключался в том, что если вы получаете ошибки FastCGI, попробуйте дважды щелкнуть непосредственно по php-cgi.exe файл, а затем поищите ошибки в журналах приложений Windows в случае сбоя. Я получил это из этого комментария от Отчет об ошибке PHP:

[2010-04-22 06:43 UTC] sejo at iteontech точка com

После отладки IIS и множества других безумных вещей у меня это сработало. У меня есть PHP 5.3.2 в Windows 7 и IIS 7. Попробуйте запустить PHP-CGI.EXE (ДВОЙНЫМ ОБРАЗОМ). Посмотрите, появляются ли у вас сообщения об ошибках / всплывающие окна. У меня их куча, и все сводилось к тому, что у меня была включена куча расширений, но они не были доступны в моей папке ext. Очистите PHP.INI от этих недопустимых расширений, и проблема должна исчезнуть.

Ну не уверен что делал, но как-то исправил. Я удалил веб-сайт и снова добавил его, затем проверил свои настройки FastCGI Mapping, все выглядело так же, как и раньше, но на этот раз работает. Я все еще хотел бы знать, почему я получаю ошибку, если возможно.

По умолчанию IIS не будет обслуживать файлы, для которых у него нет действительного сопоставления типа MIME, и будет 404 ответ

Если для расширения .php не определен тип MIME для веб-сайта, на котором вы пытаетесь запустить PHP, то IIS не будет обслуживать файл, даже если для этого типа файла существует соответствующий обработчик.

Только что проверил диспетчер IIS 7 на моем сервере, и по умолчанию в списке типов MIME нет сопоставления для PHP, я подозреваю, что если ваш веб-сайт существовал до того, как вы установили FastCGI, он не добавляет автоматически сопоставление с существующими веб-сайтами, тогда как при создании уже установлен новый сайт FastCGI.

Я мог, конечно, полностью ошибаться в этом последнем бите, но проблема сопоставления расширения файла с типом MIME является функцией безопасности IIS - нет сопоставления = нет файлов, обслуживаемых с этим расширением

Мое решение этой ошибки состояло из двух частей:

  1. (из ответа @ icc97) - дважды щелкните php-cgi.exe в папке PHP, чтобы убедиться, что он запускается нормально.
  2. Оказывается, мой index.php файл действительно был назван index.php.htm (отключите «скрывать имена расширений файлов»)

Я имел дело с аналогичной проблемой, все ответы, которые я мог найти в Интернете, не помогли. Во-первых, я предполагаю, что вы пробовали бежать http: //yourservernamehere/check.php и, кажется, все вернулось правильно. ЕСЛИ это так, я бы посоветовал проверить в вашем файле php.ini настройку под:

[Дата] ; Определяет часовой пояс по умолчанию, используемый функциями даты date.timezone =

Скорее всего, он пуст, как и у меня, это вызывает глупую ошибку с более новой версией php, и по какой-либо причине вы будете мертвым в воде, пока не укажете часовой пояс (мой - Америка / Чикаго).

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

Есть ли причина, по которой вы не используете программу установки для выполнения работы за вас?

Кроме того, можете ли вы подтвердить, что отображение обработчика .php установлено правильно?

Path : *.php
State : Enabled
Path Type : File or Folder
Handler : FastCgiModule

Сегодня у меня была эта проблема, но ни одно из вышеперечисленных исправлений не помогло мне. Я включил подробную обработку ошибок в IIS и обнаружил, что получаю ошибку 404.7: «Модуль фильтрации запросов настроен на запрет расширения файла».

Я вошел в меню «Фильтрация запросов» в диспетчере IIS, добавил «.php» в качестве утвержденного типа файла, и это устранило проблему для меня.

Когда у меня возникла эта проблема, это произошло потому, что в php.ini open_basedir был установлен, но не разрешал папку, в которой были мои файлы PHP. Добавление папки в open_basedir устранило проблему.

Я не знаю, почему я получал ошибку 404.0. Если open_basedir не был настроен должным образом, я ожидал бы ошибку 403.2.