Кодирование PHP только в IIS index.php или default.php могут быть доступны напрямую

Я использую IIS7 и долгое время имел дело только с возможностью загрузки index.php. Все другие запрошенные файлы возвращают в браузере сообщение типа «Файл не найден». Я создал свою собственную ООП-инфраструктуру, что в основном не представляет проблемы. Теперь я делаю некоторые вещи ajax. Ajax ТРЕБУЕТ, чтобы я использовал более одного файла, потому что, если бы я просто использовал файл индекса для получения данных, он также запускал бы ВСЕ другого кода в index.php. Поскольку я использую Framework, логика для одновременного запуска только выбранной части index.php НЕВОЗМОЖНА. Я даже зашел так далеко, что использовал старый «переключатель контента», который написал некоторое время назад. В основном вы выбираете файл для загрузки следующим образом: localhost/site/index.php?page=test. Это не работает. Я не только нахожу это усугубляющим, мне кажется любопытным, что IIS позволит мне включить мой класс реестра в index.php, но не позволит мне включить тест. php. Браузер возвращает это сообщение: «Файл не найден». Test.php существует. Когда я набираю случайное несуществующее имя файла, обработчик ошибок в моем «переключателе контента» выдает свою собственную ошибку: «Файл не существует». Если бы я не знал ничего лучше, я бы сказал, что IIS е**тся с моим разумом.

Так в чем, черт возьми, я дело? И как это исправить?

Извините за использование ругательств, но после 2 дней строгого кодирования (6 часов сна), а затем 7 часов сидения на заднице без прогресса, это действительно может до вас добраться.

После всего этого времени я все еще умудряюсь натыкаться на самую странную хрень во время кодирования. Такими темпами я могу стать худшим программистом всех времен, но лучшим отладчиком.


person Community    schedule 21.08.2009    source источник
comment
То, как сейчас работает система безопасности IIS, возвращает 404 для неизвестных типов файлов и ненадежных сценариев, что вызывает много путаницы. Но тот факт, что вы все еще можете получить доступ к index.php и default.php, делает это чем-то другим. Я установил php только на iis6, а не на 7, и это было давно. Это установка ISAPI или FastCGI php? И под файлом не найдено вы имеете в виду 404 не найдено?   -  person David    schedule 21.08.2009


Ответы (2)


Это похоже на проблему с конфигурацией IIS, и поэтому вы можете получить более подробные ответы на serverfault.com.

Это только файлы PHP, которые не могут быть найдены, или если вы создаете test.html, это также возвращает 404?

Вы проверили права доступа к файлам для новых файлов, которые вы создаете? Настройки безопасности и обмена

Существуют ли какие-либо настройки переадресации HTTP для рассматриваемого домена?

person Rob Drimmie    schedule 21.08.2009

Спустя почти 10 часов я понял это. По крайней мере, одна из причин, по которой IIS7 возвращает ошибку 404. Имейте в виду, что это очень странно, возможно, ошибка. Неисправный код PHP: $foo = $_GET['bar'];. Это приведет к ошибке 404 только в том случае, если в адресной строке не указано значение для «bar». Как я уже сказал, такое поведение глупо и не влияет на файлы индекса или файлы по умолчанию.

Я не могу снова войти в систему, но если мод может отдать должное Робу Дримми за «ответ», потому что его предложение помогло мне прийти к моему решению.

Большое спасибо, Роб.

person Community    schedule 21.08.2009