0

当我在本地主机上运行此代码时

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

它回应:

Doc root : C:/wamp/public_html/ 

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

Doc root : /home/setine5/public_html

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

我正在尝试找到一种方法来在我的本地主机和远程服务器上引用同一段 PHP,但由于缺少正斜杠而无法引用。

这通常是如何完成的?

4

2 回答 2

1

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

这将更加直观和易于理解。这种做法被用于许多伟大的框架和 CMS。

于 2013-07-22T03:52:31.213 回答
1

您不能提前说是否$_SERVER['DOCUMENT_ROOT']在末尾包含斜线。它因环境而异。在大多数情况下,它没有尾部/,但在 Windows 中,尾部斜杠会导致问题。

正如 Dave 所建议的,这里的解决方案是在斜杠不存在时附加斜杠。

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

另一种解决方案:

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

希望这可以帮助!

于 2013-07-22T03:45:54.663 回答