使用PHP include
时,如何找出调用include
的文件?简而言之,父文件的文件名是什么?
答案 0 :(得分:14)
一种简单的方法是在父文件中(在包含之前)分配一个变量,然后在包含的文件中引用该变量。
父文件:
$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()
并找到包含文件的时间和位置的事件,但这可能会变得有点混乱和复杂。
答案 1 :(得分:13)
$fileList = get_included_files();
$topMost = $fileList[0];
if ($topMost == __FILE__) echo 'no parents';
else echo "parent is $topMost";
我认为当有一个单亲时,这应该给出正确的结果。
我的意思是父母不是必需文件或包含文件的情况。
答案 2 :(得分:11)
迟到的回答,但是......
我使用:
检查正在运行的父文件名$_SERVER["SCRIPT_NAME"] // or
$_SERVER["REQUEST_URI"] // (with query string)
答案 3 :(得分:1)
您可以直接使用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
)
)
答案 4 :(得分:1)
从这里得到这个:https://stackoverflow.com/a/35622743/9270227
echo "Parent full URL: ";
echo $_SERVER["SCRIPT_FILENAME"] . '<br>';
答案 5 :(得分:0)
我在网上搜索相同的信息来补充有关php的在线课程,发现了两种方法。第一个是
$file = baseline($_SERVER['PHP_SELF']);
echo $file; //that outputs file name
但,在包含或要求的情况下,它将获取包含或要求的最终文件。 还发现了这个,第二个
$file = __FILE__;
echo $file; //that outputs the absolute way from file
但我只是在寻找文件名。 所以...我把它混合起来,很值得!
$file = basename(__FILE__);
echo $file; //that outputs the file name itself (no include/require problems)
答案 6 :(得分:-1)
在父文件中,在包含子文件之前添加此行:
$_SESSION['parent_file'] = $_SERVER['PHP_SELF'];
然后在子文件中,读取会话变量:
$parent_file = $_SESSION['parent_file']
答案 7 :(得分:-1)
试试:
$current_filename = basename(get_included_files()[0], '.php');
如果你想要带有 .php
扩展名的文件名,那么试试这个:
$current_filename = basename(get_included_files()[0]);
如果您想检查此文件是否包含在内? 然后:
if(get_included_files()[0] == __FILE___) {
// This File Was Not Included
} else {
// This File Was Included
}
希望它有效!