При использовании PHP include
, как я могу узнать, какой файл вызывает include
? Короче говоря, что такое имя файла родительского файла?
Получить имя файла, в котором запущен PHP,
Ответ 1
Простым способом является назначение переменной в родительском файле (до включения), а затем ссылку на эту переменную во включенном файле.
Родительский файл:
$myvar_not_replicated = __FILE__; // Make sure nothing else is going to overwrite
include 'other_file.php';
Включенный файл:
if (isset($myvar_not_replicated)) echo "{$myvar_not_replicated} included me";
else echo "Unknown file included me";
Вы также можете объединиться с get_included_files()
или debug_backtrace()
и найти событие, когда и где файл был включен, но это может стать немного грязным и сложным.
Ответ 2
$fileList = get_included_files();
$topMost = $fileList[0];
if ($topMost == __FILE__) echo 'no parents';
else echo "parent is $topMost";
Я думаю, что это должно дать правильный результат, когда есть один родитель.
Под этим я подразумеваю ситуацию, когда родитель не является обязательным или включенным файлом.
Ответ 3
Поздний ответ, но...
Я проверяю текущее родительское имя файла, используя:
$_SERVER["SCRIPT_NAME"] // or
$_SERVER["REQUEST_URI"] // (with query string)
Ответ 4
Вы можете использовать debug_backtrace() напрямую, без каких-либо дополнительных изменений внутри включенного файла:
$including_filename = pathinfo(debug_backtrace()[0]['file'])['basename'];
Это даст вам имя файла, который включает вас.
Чтобы увидеть все, к чему у вас есть доступ, из включенного файла, запустите его из него:
print_r(debug_backtrace());
Вы получите что-то вроде:
Array
(
[0] => Array
(
[file] => /var/folder/folder/folder/file.php
[line] => 554
[function] => include
)
)
Ответ 5
Получил это отсюда: fooobar.com/questions/33290/...
echo "Parent full URL: ";
echo $_SERVER["SCRIPT_FILENAME"] . '<br>';
Ответ 6
В родительском файле добавьте эту строку, прежде чем включать дочерний файл:
$_SESSION['parent_file'] = $_SERVER['PHP_SELF'];
И затем в дочернем файле прочитайте переменную сеанса:
$parent_file = $_SESSION['parent_file']