我有很多PHP文件
/
/client/
/user/
/config/
etc...
我希望我的所有文件都包含 /user/codestart.php
。 (很多功能等)
因此:
/
中的所有文件都有include("./user/codestart.php");
/user/
中的所有文件都有include("codestart.php");
/client/
中的所有文件都有include("../user/codestart.php");
问题是 /user/codestart.php
有 include("../config/config.php");
(MySQL ID 和密码)
当/
中的文件运行时,如/index.php
,它包含./user/codestart.php
。
然后/user/codestart.php
包含../config/config.php
,但是它看不到它,因为它认为它是从/<调用它
,而不是来自 /user/
。
如果我改变
include("../config/config.php")
是
包含(“./config/config.php”)
为 /
文件修复它,但为 /user/
和 /client/
文件打破它。
底线是,当一个 PHP 文件包含另一个文件时,PHP 认为它是从原始文件的位置而不是调用文件的位置运行。
我需要使用相对路径,而不是绝对路径。绝对路径在我的情况下不起作用。
有什么办法可以解决吗?
最佳答案
处理这个问题的一种方法是:
有一个中央配置文件(例如
/myproject/config/bootstrap.php
在该配置文件中,为您的应用程序定义一个全局根目录。例如
define("APP_ROOT", realpath(dirname(__FILE__)."/.."));
在每个 PHP 文件中包含该配置文件。例如
include("../config/bootstrap.php");
每当你引用其他文件时,使用
include APP_ROOT."/includes/somefile.php";
瞧 - 你在空间中有一个固定点 (APP_ROOT
) 并且可以引用与它相关的所有内容,无论你在哪个目录中。
关于php - 麻烦与/或 ./vs ../和绝对和相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7098139/