Я действительно запутался в PHP и системе путей.
У меня есть эта структура:
- Includes - Login - View * Secure
Это все каталоги на моем сайте. Теперь, если я помещаю файлы в папку «Просмотр», я могу получить доступ к файлам в моей папке «Включает»:
"../Includes/file.php"
Если я хочу включить тот же файл из защищенного каталога, я бы сделал:
"../../Includes/file.php"
Все в порядке, но вот здесь мне становится сложно.
Если файл, который я пытаюсь импортировать (файл.php в каталоге Includes), ТАКЖЕ включает файл, он все выкинет. Скажем, что файл будет содержать файл в «Вход», он должен быть ОДИН из этих 2 включений, все в зависимости от того, включает ли он код в каталоге «Безопасный» или «Вид»:
"../Login/file.php" -> if it was included from the View directory "../../Login/file.php" -> if it was included from the Secure directory.
Очевидно, эта проблема только ухудшается и ухудшается. Может быть, то, что мне нужно, – это путь к тому, чтобы путь был относительно самого FILE, а не код?
На другой заметке, я думаю, что я действительно нахожусь, как обрабатывать все это, включая «ад» в PHP? Я чувствую, что я связываю свою структуру плотно и что я не могу сильно изменить, не нарушая все. Поэтому любые советы о том, как справиться с этим, очень ценятся.
Существует два типа путей: относительный и абсолютный. Абсолютные пути начинаются с /..
(или C:/..
или, однако, работает в Windows) и всегда однозначно указывают на один конкретный файл.
Относительные пути (не начиная с /
) относятся к переменной include_path
. Это переменная, содержащая множество папок, где PHP будет искать ваш относительный путь. К этому include_path
также относится .
, текущий каталог. «Текущий» каталог зависит от того, какой файл был «первым», который должен быть выполнен. Таким образом, это зависит от того, какой файл начинает include
других.
include_path
к определенному, неизменному каталогу, поэтому у вас всегда есть фиксированный путь для включения относительно. Лучше: построить абсолютные пути:
include __DIR__ . '/../Login/file.php';
Это всегда относится к каталогу, в котором находится файл.