PHP可靠地确定调用方文件的路径


PHP reliably determine path of caller file

我有一个文件,可以这么说,它将包含在父文件中。我需要从子文件中可靠地确定父文件的路径。

我的第一个想法是$_SERVER['SCRIPT_FILENAME'],但这可以很容易地从父文件操作。

下一件事我想到的是getcwd(),但这并不总是工作,apache总是提供执行脚本的目录,但如果它是从cli或cron运行,情况并非如此。

如果我不能信任父文件,那么从要包含的文件中确定其位置的安全方法是什么?

随手,找不到任何会直接给你的"父"路径在一个包含链,但你可以使用debug_backtrace():

。/z.php

<?php
include('y/y.php');

。/y/y.php

<?php
var_dump(debug_backtrace());

然后:

$ php z.php
array(1) {
  [0]=>
  array(3) {
    ["file"]=>
    string(44) "/home/marc/z/z.php"
    ["line"]=>
    int(3)
    ["function"]=>
    string(7) "include"
  }

}