Обычно наиболее полезно включить с абсолютный путь вместо относительного пути . Есть два типичных подхода к этому. Этот пример будет работать со следующей структурой каталогов, поскольку вы не указали свою:
+var
|+www
|+public_html
-index.php
|+subfolder
|somescript.php
|+subdomain
|conn.php
1) В вашем файле index.php объявите константу, соответствующую абсолютному пути к каталогу public_html
define('APPLICATION_BASE', __DIR__ . DIRECTORY_SEPARATOR);
Затем позже используйте этот префикс для всех включений и добавьте путь относительно него:
include APPLICATION_BASE . '../subdomain/conn.php';
Этот параметр хорошо работает для большинства общих целей, позволяя вам быстро включить практически любой файл, относящийся к файлу front-controller / index
2) В качестве альтернативы, если вы не используете унифицированный индексный файл и не имеете непротиворечивой точки отсчета, достаточно надежной, чтобы ее всегда можно было включить, вы должны применить аналогичный подход, а включить на основе по абсолютному пути из файла, включая его . Обычно это означает, что вам не хватает хорошей структуры приложения, но для быстрого и грязного приложения или устаревшего кода, который не был структурирован с определенной единой точкой доступа, это часто необходимо. В случае, если вам нужно было включить файл из somescript.php
, и вы не смогли прибыть туда с index.php
, вы, вероятно, сделали бы что-то вроде этого:
include __DIR__ . '/../../subdomain/conn.php';
Следует отметить, что это работает в крайнем случае, но это далеко не оптимально, и вы должны попытаться прижать ваше приложение к первому подходу, если это вообще возможно. Использование единой точки входа сэкономит вам массу догадок при отладке, так как вы будете знать, что все файлы включены в зависимости от релевантности для единственного исходного каталога, и будут сохранять сообщения об ошибках и вести журнал намного чище и со временем более читаемыми. , что в свою очередь сэкономит вам много времени на отладку.