有没有办法找出使用require_once的文件?

ios*_*ifv 7 php require-once

假设我有以下情况:

File1.php:

<?php
require_once('init.php');
...
?>
Run Code Online (Sandbox Code Playgroud)

File2.php:

<?php
require_once('init.php');
...
?>
Run Code Online (Sandbox Code Playgroud)

的init.php:

<?php
magic_function_which_tells_me_which_file_parsed_this_file();
...
?>
Run Code Online (Sandbox Code Playgroud)

我知道这是一个长镜头,但有没有办法从init.php中知道当前执行中哪个文件包含init.php?

Xat*_*nev 5

即使没有函数,您也可以使用debug_backtrace来查找调用者:

测试1.php

<?php
echo 'test1';
include 'test2.php';
Run Code Online (Sandbox Code Playgroud)

测试2.php

<?php
echo 'test2';
print_r(debug_backtrace());
Run Code Online (Sandbox Code Playgroud)

输出

ABCArray
(
[0] => Array
    (
        [file] => /tmp/b.php
        [line] => 3
        [function] => include
    )

[1] => Array
    (
        [file] => /tmp/a.php
        [line] => 3
        [args] => Array
            (
                [0] => /tmp/b.php
            )

        [function] => include
    )
)
Run Code Online (Sandbox Code Playgroud)

无论如何,我不建议使用它,因为过度使用时它可能会明显拖累性能。