【发布时间】:2014-11-05 13:46:46
【问题描述】:
在我开始之前,这个问题之前可能已经被问过,但我要么不知道该输入什么才能具体找到它,这是一个稍微具体一点的案例。
我正在开发一个具有许多动态关系的网站,其中一些位于每个 php 文件的开头,有一行 require("global.php"); 执行名称所述的操作,其中包括 css 文件和其他任何内容在根级别找到。然而问题是,在进入另一个目录时,该文件的链接被破坏了。
传统上我所做的 (这是一个绝对愚蠢的初学者解决方法) 是在调用 $up 之前创建一个变量,其中包含字符串 '../',这取决于如何重复出现该文件来自根目录的许多目录。所以这条线会出现require($up."global.php");。
我已经意识到这是多么愚蠢,并试图找到解决方法。其中之一是使用变量$_SERVER['DOCUMENT_ROOT'] 打印出根目录,但它不能 100% 工作的原因是因为 a) 我正在本地机器上开发网站,其中网站的“根”位于development 位于服务器上的子目录中,b) 它根据驱动器上从 D:\ 开始的位置返回整个路径,并以这种方式工作,我不太喜欢使用它开发网站,如果可能,宁愿保留在 Web 服务器的托管目录中。
所以,根据我的解释,有没有一种简单的方法可以在一个短字符串中获取网站的根位置(无论项目是在子目录中还是 Web 服务器的真正根目录中)无论目录级别如何,都非常容易附加到每个 php 文件中每个文件引用的开头?
谢谢!
【问题讨论】:
-
@Gudgip 接受的答案给我的是来自驱动器根目录的目录。在 Mac 上,这是
/Applications/XAMPP/xamppfiles/htdocs/website3。有没有办法将它从website3开始,而不使用任何其他代码来修改字符串?另外,我将如何将其存储为常数?常量对我来说是新的,我不完全理解它们是如何工作的 -
嗯,这样做的一种方法是将 index.php 文件所在的目录保存在常量中(或将其输出到文件或其他文件中),然后在所有其他文件中使用它, 所以在你的其他文件中:
require ($MY_ROOT.'/relative/path/to/include/file.php')这样看起来是相对的,但实际上是绝对的。 -
尽管如此,它在子目录中开始的原因纯粹是为了本地开发。当需要将其移至主网络服务器时,它将位于网络服务器的真正根目录中,这将打破这种方法。
标签: php reference directory document-root