Получить абсолютный путь к текущему файлу в PHP

PHP

Прочитано {count} раз с 2020 г.

Если ваш код включает другие файлы, вы столкнетесь с проблемами типа «Файл не найден». Это происходит потому, что PHP не знает абсолютный путь к файлу. Поэтому, если вы включаете файлы в другой файл, вы должны указать абсолютный путь к файлу.

Но, если ваше PHP-приложение используется другими людьми, то абсолютный путь, который вы указали в своей системе, не будет таким же в системах других. Поэтому вам придется динамически указывать абсолютный путь, который будет работать в любых системах.

Пример проблемы

Вот один из сценариев, когда вы сталкиваетесь с  проблемой включения .

Предположим, что  файл index.php включает в себя файл  file1.php , который находится в  каталоге inc :

<?
include("inc/file1.php");
?>

Каталог  inc также содержит другие файлы, такие как  file2.phpfile3.phpfile4.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 можно найти  на этой странице руководства .

Исходный текст
Оцените этот перевод
Ваш отзыв поможет нам улучшить Google Переводчик