我能获取包含文件中调用的PHP文件的路径吗?

3
假设我们有一个名为 index.php 的文件,存储在 /home/user/public/www 中,并且 index.php 从文件 inc/app/Foo.class.php 调用类 Foo->bar()
在这种情况下,我希望 Foo 类中的 bar 函数可以获取路径 /home/user/public/www - 我不想使用全局变量、传递变量等等。请注意保留 HTML 标签。
4个回答

15
你可以使用debug_backtrace来查看调用路径并获取调用该函数的文件。
一个简短的示例:
class Foo {
  function bar() {    
   $trace = debug_backtrace();
   echo "calling file was ".$trace[0]['file']."\n";
  }
}

12

这样不会更容易地获取正在运行的脚本所在的目录吗?

$dir=dirname($_SERVER["SCRIPT_FILENAME"])

1
好的,Paul。大部分情况下这个会起作用。不过也有可能你会遇到一些包含index.php的情况。例如,special.php包含了index.php,而index.php又包含了inc/app/Foo.class.php。这种情况很少见,但是有可能发生。 - Devon
哦,我以为如果你从命令行调用脚本的话,它不会起作用,但实际上可以! - RobbieGee

2

getcwd() 函数可以获取当前工作目录。

通过执行 chdir() 命令,第三方模块、包括您自己的代码等多种原因都可能更改当前工作目录。

正如 Devon 所建议的那样,debug_backtrace() 是您正在寻找的答案。


1

找到了。getcwd()。


1
请注意,调用chdir()函数将会改变工作目录。 - Powerlord

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接