Операторы включения PHP не включают файлы в папке с использованием относительных путей - PullRequest
1 голос
/ 01 апреля 2012

Я учу себя разработке веб-сайтов и учу себя php и html. Когда я изначально начал это, я разработал свой сайт на Apache, работающий на Windows XP. Как только я исправил большинство ошибок, я загрузил их на бесплатный серверный хостинг, и все было просто ужасно.

К сожалению, окна умерли (поврежденный файл в моей папке system32), и сейчас я работаю под управлением Linux Mint. Я только что установил apache2, php и mysql, чтобы я мог продолжить разработку своего сайта, но вот проблема:

Чтобы сэкономить время, у меня есть php, включающий мои html-файлы заголовка и нижнего колонтитула, используя оператор include следующим образом:

<?php include("./dir/file1.html");?>

Это сработало как для Windows, так и для бесплатного сервера (который, я считаю, работает под управлением версии Linux, но не цитируйте меня по этому поводу). Тем не менее, он больше не работает на моей машине. Это работает:

<?php include("./file2.html");?>

но я бы не хотел рефракционировать каждую имеющуюся у меня веб-страницу. Как я могу заставить мои операторы включения снова включать файлы в папки по относительным путям?

То, что я пробовал:

Я изменил include_path, чтобы он указывал на dir, но безрезультатно.

Я пробовал абсолютные пути, но это тоже не сработало.

Я перебрал apache.conf и php.ini в поисках всего, что могло бы помешать его чтению.

Дважды проверил права доступа к папке и файлу, чтобы убедиться, что он может быть прочитан.

Любой и все советы будут оценены, большое спасибо заранее.

UPDATE

использование require дает мне ошибку:

Веб-сайт обнаружил ошибку при получении http://localhost/. Возможно, он не работает из-за технического обслуживания или настроен неправильно.

Что не очень полезно.

Нет ошибок при использовании только оператора включения.

В моем include_path есть ".:".

Окончательное обновление

После долгих проб и ошибок я пришел к выводу, что проблема вовсе не в php или операторе include, а в том, что сервер apache по какой-то причине не разрешает доступ к подкаталогам. Этот вопрос сейчас спорный и должен быть закрыт.

1 Ответ

0 голосов
/ 01 апреля 2012

Для включения файла с использованием относительного пути, убедитесь, что в вашем include_path есть "." , установите его в php.ini или в вашем скрипте:

set_include_path( ".:" . get_include_path());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...