IIS буквально отправляет код <?php ... ?>
В браузер, а затем выполняет его.
Но только для файла root http://domain.com/index.php
.
Все остальные .php-файлы в этой папке и файлы index.php во вложенных папках выполняются так, как ожидалось.
Как я могу получить свой корневой код index.php для выполнения?
Обновление: «index.php» – это документ по умолчанию моего веб-сайта …
alt text http://img412.imageshack.us/img412/4130/defaultdocumentmt9.gif
ОБНОВЛЕНО: я нашел несколько возможных обходных путей для PHP 5 и IIS 7. Если эти решения не работают, предоставьте более подробную информацию об установке index.php
, IIS или попробуйте использовать совместимость с IIS 6.
Кажется, вы правильно настроили обработчики. Если вы используете <? ... ?>
<? ... ?>
убедитесь, что у вас short_open_tag = On
в php.ini.
У меня возникла эта проблема, и в конечном итоге она отслеживала исходный код для кодирования файла PHP. По-видимому, я установил, что мой редактор использует Unicode (2-байтовый Unicode, а не UTF-8) в качестве кодировки. Это заставляет PHP не видеть <?
теги, но браузер, похоже, умеет хорошо читать файл Unicode, поэтому просмотр источника показывает фактический PHP-код. (Несмотря на то, что у файла был метатег content-type = utf-8!). Сохранение файла PHP в кодировке ANSI или UTF-8 решило проблему.
Много отладки входило в поиск этого простого решения, поэтому я подумал, что добавлю его сюда для всех, у кого есть эта проблема.
Интересным побочным эффектом проблемы было то, что Firefox и Chrome не загружали файл CSS. После дальнейшего изучения я обнаружил, что браузеры должны предполагать ту же кодировку для CSS, что и для HTML, если явно не указано в файле CSS. Просмотр CSS в Chrome или Firefox будет показывать китайские символы! На самом деле это помогло мне в решении.
Вы пробовали перескакивать (останавливать / перезапускать) IIS? Может быть, даже перезапустить машину? Я знаю, что были времена, когда я сделал некоторые изменения конфигурации IIS, которые я бы поклялся, должен был только потребоваться только отскок, чтобы вступить в силу, который не дошел до полного перезапуска машины.