Я исследовал в течение 2 дней и не могу найти ответ, который работает.
Это моя файловая структура.
/ucdev/ (index and future files)
/ucdev/classes/ (Classes)
/ucdev/users/ (all the user-related docs,account settings etc)
/ucdev/users/models/ (all the other config and db files, for now).
Мне нужно найти способ загрузить все мои классы, независимо от того, из какой папки я вызываю включения. В основном мне нужно установить корневую переменную сайта, которая работает.
Я получил самое близкое использование
$subfolder = "/ucdev/";
$root = $_SERVER["DOCUMENT_ROOT"].$subfolder;
Но Chrome обрабатывает этот $ _SERVER [«DOCUMENT_ROOT»] как локальный путь c: \ type и не позволяет загружать ресурсы (т. Е. Не разрешается загружать локальную ошибку ресурса в Chrome).
Итак, в основном мне нужен способ, чтобы в моем файле config.php было что-то вроде …
require_once ($root."classes/Session.php");
require_once ($root."classes/Token.php");
require_once ($root."classes/User.php");
и эти ресурсы загружаются независимо от того, был ли этот config.php извлечен из
ucdev/index.php
or
ucdev/users/login.php
Я надеюсь, что дал достаточно информации, чтобы иметь смысл.
Наконец, одна из самых важных вещей заключается в том, что я каким-то образом получаю переменную «root path», чтобы я мог вызывать все свои ссылки из root, а не по отношению к вызывающему их файлу. Я хотел бы, чтобы моя верхняя навигация работала независимо от того, какой файл ее вызывает.
Я нашел лучший способ сделать это, чтобы:
$subfolder = "/ucdev/";
$root = realpath($_SERVER["DOCUMENT_ROOT"].$subfolder);
define('root',str_replace("\\","/",$root) ."/");
Затем, когда я включаю свои классы, я использую
require_once (root."classes/Config.php");
и они работают откуда угодно.
Для изображений и ссылок, которые расположены относительно корня, я могу сделать что-то вроде …
img src="<?php root; ?>images/logo.png"
Большое спасибо Lucky Chingi за то, что он указал мне правильное направление!
Других решений пока нет …