我正在把头发撕成一些应该很容易实现的东西,但这让我很生气,我似乎无法理解它 - 在MAMP虚拟服务器上的PHP相对路径
简单地说,我在MAMP的htdocs
文件夹中有一个名为mywebsite
的文件夹(我在此文件夹中还有其他不相关的网站文件夹)。在里面,结构有点像这样:
mywebsite
|
----- index.php
|
----- header.php
|
----- menu.php
|
----- js
|
----- somejs.js
|
----- css
|
----- style.css
|
----- sales
|
----- sales.php
由于我(并且可能会继续拥有)子文件夹的许多子文件夹和子文件夹,我正在寻找一种简单的方法来链接到树顶部文件夹中包含的相应文件(例如CSS文件, JS文件,include
文件等)通过相对路径,从其他子文件夹中可能长到树下(例如博客文章可能会开始/blogs/2013/03/01/myblogpost.php
)。
问题在于,当我使用时,$path = $_SERVER['DOCUMENT_ROOT'];
,$path
会返回:/Applications/MAMP/htdocs
(即MAMP中所有网站文件夹的主文件夹)。
同样,$path = __DIR__;
和$path = getcwd();
都返回:/ Applications / MAMP / htdocs / mywebsite
因此,在这两种情况下,相对路径将不起作用,因为站点将尝试查找,例如, “/Applications/MAMP/htdocs/mywebsite/css/style.css”而不是“../ css / style.css”。
我设法破解了我的代码,将其包含在header.php文件中:
$current_folder = array_pop(explode("/", getcwd()));
if ($current_folder == "mywebsite"):
$path = "./";
else:
$path = "../";
endif;
然而,虽然目前有两级子目录,但如果我有多个子文件夹的子文件夹,事情会变得更加混乱 - 例如,如果销售有另一个名为2013的子文件夹,那么$path
将需要向上移动两个级别,即$path = "../../";
。
我能做些什么来简化这个过程(理想情况下不更改MAMP中的Apache设置)?
谢谢!