Использование include() для загрузки различного содержимого страницы действует по-разному локально по сравнению с размещенным

У меня есть живой сайт, который включает в себя разные php-файлы в зависимости от того, к какой странице пользователь пытается получить доступ. Верхний и нижний колонтитулы одинаковы, но в файле, если пользователь запрашивает filename1.php против filename2.php, в содержимое страницы загружается другой php. Основные элементы CMS.

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

Как это работает вживую:

<html>
    <head>
        Stuff
    </head>

    <body>
        More stuff
        <? include( 'some_file.php' ); ?>
    </body>
</html>

Как это работает локально:

<? include( 'some_file.php' ); ?>

Загружается только этот файл, никакого другого контента.

Любые мысли о том, почему загружается эта одна страница, но не окружающий контент? Если я плохо объясняю это, пожалуйста, дайте мне знать.

Редактировать:

Это может быть лучшим объяснением? или нет.. Во всяком случае, включенная страница вместо загрузки в середину индексного файла загружается вместо индексного файла.

Редактировать 2:

Вот как это выглядит вживую, что можно увидеть по адресу http://saloncosabella.com/our_team/meet_our_team : http://img.skitch.com/20100510-j36r58pu6kjrmekexixh81f96i.jpg

А вот как это выглядит локально: http://img.skitch.com/20100510-q29f2uq34g5pp68w5ke77dddks.jpg

HTML-код, который отображается на локальном сайте (не все так красиво, я знаю):

                    <a href="/our_team/meet_our_team?stylist=jamie.staton"><img src="/images/our_team/jamie.staton.png" class="thumbnail first_thumb" /></a><a href="/our_team/meet_our_team?stylist=torrey.staton"><img src="/images/our_team/torrey.staton.png" class="thumbnail" /></a><a href="/our_team/meet_our_team?stylist=brittany.benallo"><img src="/images/our_team/brittany.benallo.png" class="thumbnail" /></a><a href="/our_team/meet_our_team?stylist=victoria."><img src="/images/our_team/victoria..png" class="thumbnail" /></a><a href="/our_team/meet_our_team?stylist=tiahna.cristobal"><img src="/images/our_team/tiahna.cristobal.png" class="thumbnail" /></a><a href="/our_team/meet_our_team?stylist=christina.walker"><img src="/images/our_team/christina.walker.png" class="thumbnail" /></a><a href="/our_team/meet_our_team?stylist=kristen.pulst"><img src="/images/our_team/kristen.pulst.png" class="thumbnail" /></a><a href="/our_team/meet_our_team?stylist=allison.canino"><img src="/images/our_team/allison.canino.png" class="thumbnail" /></a><a href="/our_team/meet_our_team?stylist=lia."><img src="/images/our_team/lia..png" class="thumbnail" /></a><a href="/our_team/meet_our_team?stylist=alex.woodworth"><img src="/images/our_team/alex.woodworth.png" class="thumbnail" /></a><a href="/our_team/meet_our_team?stylist=lauren.hassett"><img src="/images/our_team/lauren.hassett.png" class="thumbnail" /></a><a href="?stylist_page=1"><img src="/images/our_team/see_more.png" alt="See More" class="thumbnail" ></a>             <div class="clear"></div> 

person hookedonwinter    schedule 10.05.2010    source источник
comment
Возможно ли, что вам нужен открывающий тег <?php вместо <??   -  person John Rasch    schedule 10.05.2010
comment
Неа. У меня включены короткие теги, и они работают в других ситуациях на сайте. Я просто попробовал, чтобы убедиться, и это не решило проблему.   -  person hookedonwinter    schedule 10.05.2010
comment
хорошо, каково фактическое расположение some_file.php в файловой системе? возможно, есть разница в вашем include_path, попробуйте изменить include на require и посмотрите, что он на вас лает.   -  person prodigitalson    schedule 10.05.2010
comment
@prodigitalson include( $_SERVER['DOCUMENT_ROOT'] . '/our_team.php' );   -  person hookedonwinter    schedule 10.05.2010
comment
@prodigitalson странно то, что загружается файл some_file .. если бы он не загружался, я бы, наверное, мог это понять. Но он загружается, и ничего больше.   -  person hookedonwinter    schedule 10.05.2010
comment
а в логах ошибок ничего нет? Также можете ли вы подтвердить, что при просмотре исходного кода там нет ничего, кроме включенного контента? (если отсутствует тег или что-то еще, возможно, DOM просто не отображается должным образом)   -  person prodigitalson    schedule 10.05.2010
comment
В логах ошибок ничего. Я обновлю вопрос, чтобы показать более подробную информацию о том, что происходит   -  person hookedonwinter    schedule 10.05.2010


Ответы (5)


Сравните выходные данные phpinfo() на обоих серверах. Посмотрите, что отличается. Возможно, таким образом вы сможете определить, почему это происходит.

Кроме того, вы можете попробовать третий сервер — может быть, какая-то виртуальная машина, уже предварительно настроенная для LAMPP. Посмотрите, что происходит.

И последнее, попробуйте сделать простой тестовый пример, сравните результаты.

person Vanco    schedule 10.05.2010
comment
Что ж, это (phpinfo()) просто хорошая идея. Я вернусь к вам. - person hookedonwinter; 10.05.2010
comment
Ну, у меня прямо работают 2 разные версии php. Локальная 5.3.1, живая 5.2.6. Помимо этого есть масса отличий. Я сохранил информацию: Локально — pjhoberman.com/storage/sc_local.html Live — pjhoberman.com/storage/sc_live.html. - person hookedonwinter; 10.05.2010
comment
В вашем локальном php.ini установите для параметра allow_url_fopen значение off. Затем убедитесь, что ваш подключаемый файл заключен в допустимые ‹?php начальный и ?› конечный теги. В руководстве по PHP говорится: Когда файл включен, синтаксический анализ выходит из режима PHP и переходит в режим HTML в начале целевого файла и снова возобновляется в конце. По этой причине любой код внутри целевого файла, который должен выполняться как код PHP, должен быть заключен в допустимые начальный и конечный теги PHP. Прочтите запись о включении и всех комментариев. Может быть, вы найдете что-то там. Включенный файл, если он в utf-8, должен быть без спецификации. - person Vanco; 11.05.2010
comment
В качестве примечания, я бы определенно использовал сервер на базе Linux для вашей разработки. Это легко сделать с помощью виртуальной машины. А еще лучше купите дешевый ПК и сделайте из него сервер. Конечно, вы все еще можете использовать Mac для кодирования. - person Vanco; 11.05.2010

Возможно, короткий тег отключен на вашем локальном сервере. Проверьте эту переменную,

short_open_tag
person ZZ Coder    schedule 10.05.2010
comment
Нет, не в этом дело. Переменная включена в ini-файле, а короткие теги работают в другом месте. Я только что попробовал ‹?php, чтобы убедиться, что это не случайность, но это не изменило эффект. - person hookedonwinter; 10.05.2010

Используют ли ваши скрипты буферизацию вывода? Если область заголовка включает буферизацию, а ваше «среднее» включение выполняет ob_end_clean() и не сохраняет возвращенные данные буфера, это будет выглядеть так, как если бы отображалось только среднее включение, даже если все генерировалось правильно.

person Marc B    schedule 10.05.2010
comment
Я не использую какую-либо буферизацию, но если бы я ее использовал, то почему бы это изменило вывод, где единственной переменной является сервер? - person hookedonwinter; 10.05.2010

Очень-очень странно...

Похоже, веб-сервер ничего не выводит из тегов PHP...

Или, может быть, вывод не начнется, пока не понадобится модуль PHP.

¿Можете ли вы добавить текст <?php echo "hi"; ?> в первую строку локального файла, чтобы проверить, работает ли он?

person fjfnaranjo    schedule 10.05.2010

У вас есть выход; в вашем php-коде? Удаление любых выходов в моем php решило проблему для меня.

person Siriss    schedule 17.11.2010