Doc Root在哪里

时间:2013-07-22 03:25:48

标签: php

当我在localhost上运行此代码时

$root = $_SERVER['DOCUMENT_ROOT'];
echo "Doc root : $root <br />";

它回应:

Doc root : C:/wamp/public_html/ 

当我在远程服务器上运行相同的代码时,它会响应:

Doc root : /home/setine5/public_html

请注意,它没有尾随“/”

我正在尝试找到一种在我的localhost和远程服务器上引用同一块PHP的方法但由于缺少正斜杠而无法使用。

这是如何正常完成的?

2 个答案:

答案 0 :(得分:1)

如果$_SERVER['DOCUMENT_ROOT']最后是否包含斜杠,则不能提前说出来。它根据环境而有所不同。在大多数情况下,它没有尾随/,但在Windows中,尾部斜杠会导致问题。

正如Dave建议的那样,这里的解决方案是在不存在的情况下追加尾部斜杠。

$_SERVER['DOCUMENT_ROOT'] = sprintf('%s/', rtrim($_SERVER['DOCUMENT_ROOT'], '/'));

另一种解决方案:

$_SERVER['DOCUMENT_ROOT'] .= (substr($_SERVER['DOCUMENT_ROOT'], -1) == '/')?'':'/';

希望这有帮助!

答案 1 :(得分:1)

我建议您不要使用$_SERVER['DOCUMENT_ROOT']来指定文件位置。但是在前端控制器中使用__DIR__dirname(__FILE__) // For PHP version < 5.3来确定它所在的位置,然后使用相对于文件的前端控制器路径。

这将更直观,更容易理解。这种做法在许多优秀的框架和CMS中使用。