2016-10-13 10 views
3

У меня есть частный участок в пределах участка со структурой папок, как такКак использовать корневой путь с требованием?

www.site.com/privatePath/secretFolder/login.php 

Тогда некоторые подкаталоги например

www.site.com/privatePath/secretFolder/grandmasRecipes/applePie.php 

Существует общая functions.php рядом с login.php

www.site.com/privatePath/secretFolder/functions.php (создает $ connection, mysql blah blah)

У меня есть разные подпапки и файлы, которые я хочу подключить ct to functions.php, некоторые из них создаются динамически, поэтому решение должно работать из любой позиции файла/папки.

Просто для уточнения:

Поскольку тот же файл может называться в разных папках, я хотел бы, чтобы вызвать файл functions.php не откуда файл, но по отношению к корневой папке. Так что без относительных ../ и т.д. ссылки

мой вопрос: Как я могу получить доступ к требуемому файлу php из любого файла на моем веб-сайте?

+0

Динамически сгенерированные файлы PHP звучат как ** очень плохая идея ** – Phil

+0

@Phil совершенно правильно. Он существует, потому что меню и подменю и ссылки на страницы создаются через файловые каталоги. Проблема заключается в том, что каждая страница должна создавать сеансы. – Gamemorize

+0

Хотя я думаю, что полагаться на 'DOCUMENT_ROOT' - плохая идея (для начала она не будет работать, если ваш HTTP-сервер не устанавливает свойство), я не вижу причины, почему ваш код не будет работать. Вы абсолютно уверены, что у вас нет 'require 'functions.php';' в вашем скрипте 'applePie.php' в строке # 4? – Phil

ответ

4

Мой совет never полагаться на любую внешнюю конфигурацию пути (например, DOCUMENT_ROOT). Вместо этого, используйте пути относительно текущего сценария ...

От login.php

require_once __DIR__ . '/functions.php'; 

От grandmasRecipes/applePie.php

require_once __DIR__ . '/../functions.php'; 

См http://php.net/manual/language.constants.predefined.php#constant.dir


Альтернативой может быть, чтобы установить include_path для текущей среды нт. Вы можете сделать это, скажем, в .user.ini файл в корневом каталоге документов

; /home/cpanelLogIn/public_html/.user.ini 

include_path="/home/cpanelLogIn/public_html/:." 

Тогда вы можете просто использовать

require_once 'privatePath/secretFolder/functions.php'; 

нигде

+0

Спасибо, Phil, К сожалению, я не могу гарантировать, какую папку вызывается из созданного файла. Поэтому мне нужно коренное решение. – Gamemorize

+0

@Gamemorize Я понятия не имею, что это значит – Phil

+0

Я имею в виду, что, поскольку один и тот же файл может быть вызван в разных папках, я бы хотел, чтобы он вызывал файл functions.php не с того места, где находится файл, а с корневой папкой – Gamemorize

0

Альтернативное решение:

require ($_SERVER['DOCUMENT_ROOT'] . "/privatePath/secretFolder/functions.php"); 

будет доступ к функциям .php-файл с любой страницы сайта.