【问题标题】:Can I get the path of the PHP file originally called within an included file?我可以获得最初在包含文件中调用的 PHP 文件的路径吗?
【发布时间】:2010-09-13 11:29:17
【问题描述】:

假设我们有index.php,它存储在/home/user/public/www 中,index.php 从文件inc/app/Foo.class.php 调用类Foo->bar()

我希望 Foo 类中的 bar 函数在这种情况下获取路径 /home/user/public/www ——我不想使用全局变量、传递变量等。

【问题讨论】:

    标签: php path


    【解决方案1】:

    找到了。 getcwd().

    【讨论】:

    • 请注意,任何对 chdir() 的调用都会更改工作目录。
    【解决方案2】:

    可以使用debug_backtrace查看调用路径,获取调用该函数的文件。

    一个简短的例子:

    class Foo {
      function bar() {    
       $trace = debug_backtrace();
       echo "calling file was ".$trace[0]['file']."\n";
      }
    }
    

    【讨论】:

      【解决方案3】:

      getcwd() 获取当前工作目录

      可以通过 3rd 方模块出于各种原因更改它,包括甚至您自己的代码,方法是发出 chdir()

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

      【讨论】:

        【解决方案4】:

        这不是让你更容易找到运行脚本的目录吗?

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

        【讨论】:

        • 保罗好。这将在大多数情况下起作用。但是,您可能拥有包含 index.php 的内容。例如,special.php 包含 index.php,其中包含 inc/app/Foo.class.php。这种情况很少见,但有可能。
        • 呵呵,我以为如果你从命令行调用脚本就行不通,但它确实行!
        猜你喜欢
        • 2016-03-25
        • 1970-01-01
        • 1970-01-01
        • 2011-11-24
        • 1970-01-01
        • 1970-01-01
        • 2016-09-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多