Если ваш код включает другие файлы, вы столкнетесь с проблемами типа «Файл не найден». Это происходит потому, что PHP не знает абсолютный путь к файлу. Поэтому, если вы включаете файлы в другой файл, вы должны указать абсолютный путь к файлу.
Но, если ваше PHP-приложение используется другими людьми, то абсолютный путь, который вы указали в своей системе, не будет таким же в системах других. Поэтому вам придется динамически указывать абсолютный путь, который будет работать в любых системах.
Пример проблемы
Вот один из сценариев, когда вы сталкиваетесь с проблемой включения .
Предположим, что файл index.php включает в себя файл file1.php , который находится в каталоге inc :
<?
include("inc/file1.php");
?>
Каталог inc также содержит другие файлы, такие как file2.php , file3.php , file4.php и т. д. Если вы хотите включить file2.php в file1.php, как показано ниже, это не сработает:
<?
include("file2.php");
?>
В file1.php корневой каталог — это index.php . Потому что мы включаем file1.php из index.php , который находится за пределами каталога.**
**
Я думаю, вы понимаете проблему. К счастью, у меня есть решение, которое решает эту проблему.
Решение проблемы
Начиная с PHP 4.0.2 , __FILE__ возвращает абсолютный путь к запущенному скрипту, даже если это включаемый файл. Передав константу __FILE__ функции dirname , вы получите каталог скрипта. Таким образом, код в file1.php станет следующим:
<?
include(dirname(__FILE__)."/file2.php");
?>
В версии 5.3.0 и более поздних версиях появилась новая константа __DIR__ , которая является кратким вариантом dirname(__FILE__) . Вы также можете использовать ее вместо того, что мы использовали ранее. Теперь код в file1.php станет таким:
<?
include(__DIR__."/file2.php");
?>
Больше магических констант PHP можно найти на этой странице руководства .