Как вы используете заголовок require_once для элементов в другой папке?

Я использую require_once("header.php"); для всех страниц своего сайта. Хотя я чувствую, что могу использовать этот код только для файлов, находящихся непосредственно в папке public_html. Если я использую код require_once("header.php"); для любых других файлов, расположенных в каталоге (например, рубашки) под public_html, например, у вас есть public_html/shirts/example.php, header.php не загружает изображения, ссылки или любые другие страницы. правильно.

Я знаю, что для решения этой проблемы в краткосрочной перспективе я могу создать новый заголовок только для этого каталога и добавить ../ ко всему коду, но я думаю, что есть более простой способ. Кто-нибудь знает, как я могу просто изменить код header.php, чтобы мне не приходилось делать отдельные заголовки?

Спасибо.


person Andrew    schedule 22.09.2011    source источник
comment
В этом разница между относительным и абсолютным путями. Но вам нужно понимать пути (в зависимости от платформы): en.wikipedia.org/wiki/ Path_%28computing%29   -  person Jared Farrish    schedule 23.09.2011
comment
stackoverflow.com/questions/1755216/   -  person Jared Farrish    schedule 23.09.2011


Ответы (1)


Вы можете добавить к своему include_path.

Либо добавьте текущий каталог, где находится header.php, либо создайте папку с именем include где-нибудь на своем сайте и добавьте ее в путь включения.

Вы можете либо обновить include_path в php.ini (самый простой способ), либо сделать это программно следующим образом:

set_include_path(implode(PATH_SEPARATOR, array(
    '/path/to/your/includes',
    get_include_path(),
)));

Программный метод работает хорошо, но если большинство ваших файлов не обслуживаются через общий скрипт (например, шаблон переднего контроллера), вам нужно будет скопировать этот код во все ваши файлы, что не идеально. Иногда вы также можете использовать .htaccess для установки include_path, но только если PHP является модулем Apache.

Пока ваша структура довольно статична, нет ничего плохого в том, чтобы включить использование ../.

person drew010    schedule 23.09.2011
comment
Я обновил include_path в php.ini, но теперь отдельная страница не распознает header.php в include_path = .:/home/boldfo5/includes. Есть ли способ исправить это? - person Andrew; 23.09.2011
comment
Убедитесь, что вы перезапустили веб-сервер после изменения php.ini, чтобы изменения вступили в силу. Что вы имеете в виду, что отдельная страница не распознает header.php? Некоторые страницы распознают его? Поскольку вы добавили это для включения пути, вы должны иметь возможность include "header.php" из любого из ваших сценариев без какой-либо информации о пути, и если он не найден в текущем каталоге, он будет искать его в /home/boldfo5/includes. - person drew010; 23.09.2011