Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取包含文件的文件的路径/名称?_Php_Include_Constants_Require - Fatal编程技术网

Php 获取包含文件的文件的路径/名称?

Php 获取包含文件的文件的路径/名称?,php,include,constants,require,Php,Include,Constants,Require,我有一个文件header.php,它是require()。它的一个用途是检查文件db_conn.php是否存在,如果不存在,则重定向到一个特定的页面-,除非require()'d进入的文件是/admin/settings/index.php 然而,我刚刚意识到,常量\uuu文件\uuu属于header.php,而不是它的require()'d文件,使其无法使用 我想知道是否有可能获取父文件的路径和文件名,其中header.php是require()'d 仅供参考,以下是我的代码: if(file

我有一个文件
header.php
,它是
require()。它的一个用途是检查文件
db_conn.php
是否存在,如果不存在,则重定向到一个特定的页面-,除非
require()'d
进入的文件是
/admin/settings/index.php

然而,我刚刚意识到,常量
\uuu文件\uuu
属于
header.php
,而不是它的
require()'d
文件,使其无法使用

我想知道是否有可能获取父文件的路径和文件名,其中
header.php
require()'d

仅供参考,以下是我的代码:

if(file_exists($rp . "/_static/inc/db_conn.php")) {
    require $rp . "/_static/inc/db_conn.php";
} elseif(__FILE__ == $rp . "/admin/settings/index.php" && !file_exists($rp . "/_static/inc/db_conn.php")) {
    $init = true;
} else {
    header("Location:" . $server_name['plat'] . "/admin/settings/?error=1");
}

任何帮助都将不胜感激!谢谢

对于复杂的嵌套包含,我知道的唯一方法是使用debug_backtrace()


然而,对于这种普通情况,脚本文件名的PHP SELF就足够了,我相信,您可以通过调试回溯来找到答案。但是,更好的解决方案是在
/admin/settings/index.php
中设置一个变量,指示它是否应该查找
db_conn.php
。这是可能的,因为范围继承到包含的文件中:

/admin/settings/index.php:

$check_for_dbfile = false;
db_conn.php:

if(!isset($check_for_dbfile)) {
   // do your check..
}
尝试使用

$arr_scripts[] = __FILE__; 

在每个文件的顶部。。。如果需要,请稍后进行分析

道具,这正是我需要的!对于其他人,我使用了
realpath($\u SERVER['SCRIPT\u FILENAME'])
,它可以完美地在线工作。