Возникли проблемы с получением корневого каталога из разных папок - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь подключить определенный заголовочный файл для разных файлов в разных папках.Проблема заключается в том, что когда тот же файл включен в, например, / backend, он будет легко вызываться напрямую (так как индекс также находится в / backend), но при вызове его из backend / pages он больше не вызывает структуру ссылки, что приводит к мертвой ссылке.

Я перепробовал все возможные вещи с ../ и различными заголовочными файлами, но это не пойдет.Попытка найти решение, такое как приведенный ниже URL, очень близка, но все же я не могу понять, как это сделать.

Переменная корневого пути в проекте PHP

Что бы это былолучший способ автоматически включить рут в include или require, например.

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Если вы используете фронт-контроллер (например, файл index.php), который запускает и выполняет ваше приложение целиком, вы можете просто установить там константу, например define('APP_ROOT', __DIR__);, и это установит root в качестве вашего фронт-контроллера,

Вы можете получить доступ к файлу заголовка из любого места, выполнив APP_ROOT . "/includes/header.php"

Если вы не используете фронт-контроллер, вы можете установить его в каждом файле.Так что для бэкэнда / страниц это будет что-то вроде ./../includes/header.php.или, что еще лучше, используйте $_SERVER['DOCUMENT_ROOT'], чтобы получить рут вашего приложения, как указано в конфигурации vhosts вашего веб-сервера.(Apache of NGINX наиболее вероятно)

$_SERVER['DOCUMENT_ROOT'] . "/app/backend/includes/header.php" например.

0 голосов
/ 10 октября 2018

Как лучше всего автоматически включить рут в include или require, например.

Я не знаю ни одного способа сделать это без изменения самого PHP ипересборка из исходного кода, но я могу ошибаться.Ваш корневой путь всегда будет храниться в $_SERVER['DOCUMENT_ROOT'].

. Я думаю, что вы, возможно, захотите рассмотреть это автозагрузка и, более конкретно, PSR-4 и композитор .

...