Получение пути / имени файла с включенным файлом? - PullRequest
0 голосов
/ 05 ноября 2011

У меня есть файл header.php, который равен require()'d почти в каждом файле в конкретном пакете.Одно из его применений - проверить, существует ли файл db_conn.php, и если нет, перенаправить на определенную страницу - , за исключением , когда файл, в который он require()'d входит, равен /admin/settings/index.php.

Однако я только что понял, что константа __FILE__ относится к 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");
}

Любая помощь будет принята с благодарностью!Спасибо!

Ответы [ 3 ]

1 голос
/ 05 ноября 2011

Ну, вы можете поиграться с debug_backtrace, чтобы выяснить это.Однако лучшим решением было бы установить переменную в /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..
}
1 голос
/ 05 ноября 2011

хорошо, для сложного вложенного включает единственный известный мне способ - использовать debug_backtrace ()

однако для такого обычного случая, мне кажется, достаточно PHP_SELF для SCRIPT_FILENAME

0 голосов
/ 05 ноября 2011

попробуйте использовать

$arr_scripts[] = __FILE__; 

вверху каждого файла ... и проанализируйте позже, если вам нужно.

...