PHP 获取包含文件的文件目录

标签 php include-path dirname

我有以下 PHP 文件结构:

dir0
    dirA    
        dirA.1    
            dirA.1.1    
                fileA.php : dirname(__FILE__).'/docs';    
        dirA.2
        ...    
    dirB    
       fileB.php: include_once("../dirA/dirA.1/dirA.1.1/fileA.php");    
    dirC    
       fileC.php: include_once("../dirA/dirA.1/dirA.1.1/fileA.php");

在包含的 fileA.php 中,我使用 dirname(__FILE__)

如果我直接调用 fileA.php 的函数,我会得到当前路径。但是,如果我在 fileB.phpfileC.php 中调用它(包含后),我会得到错误的路径,...等等!

如何获取包含文件的目录?

注意: dir0(root) 的名称可能会改变,所以我不想为这些路径使用静态字符串!

最佳答案

你不会误入歧途。

include 使被调用文件成为调用它的脚本的一部分,但它不会更改 PHP 指向的路径。因此,如果您从 dirB 调用 fileA,PHP 仍在 dirB 中。

但是你知道 dirA(否则你不能包含 fileA),所以 chdir("../dirA/dirA.1/dirA.1.1/") 会将 PHP 指向 dirA,甚至来自文件 B 或文件 C。

您可以考虑从 dir0 开始工作。使用 dirB/fileB.php 调用 fileB 并使用 include "dirA/dirA.1/dirA.1.1/fileA.php" 包含 fileA。在那种情况下,您始终知道自己在树中的位置:在 dir0 中。

编辑 我错了。如果从包含的文件 A 中调用 dirname(__FILE__);,它会返回文件 A 的路径。所以你在 fileA 的顶部要做的就是:

$mypath=dirname(__FILE__);
function myfunction($path){
    echo $path;
    }

然后在 fileB 中传递 $mypath 时调用你的函数:

 myfunction($mypath);

请注意,您可能需要对斜杠和反斜杠进行一些调整,具体取决于您的服务器运行的系统。

关于PHP 获取包含文件的文件目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23105966/

相关文章:

php - 排序一个整数数组,负整数排在前面,正整数排在后面

php - 在 foreach 循环中使用 jQuery 下拉更新 MySQL

jsp - 如何在 JSP 中导入 CSS 文件?

PHP 如何在 dirname(__FILE__) 上更上一层楼

bash - 如何在 bash 中获取给定路径的根目录?

php - MySQL 来自两个高级表的请求

javascript - (localhost) 元 http-equiv 不适用于 Android 浏览器

c - 我如何 robuSTLy 包含可能位于不同(未知)目录中的外部头文件?

c - iks01a2_conf.h 模板中的头文件

python - 不同 linux 发行版上的 python 系统属性 "__file__"不一致