这是获取服务器绝对路径的最佳方法

时间:2014-07-01 22:06:23

标签: php

我现在有两个选择,我正在努力获取服务器的绝对路径。我主要关心的是服务器的速度和稳定性。我正在尝试找到一种替换$ _SERVER ['CONTEXT_DOCUMENT_ROOT']的方法,因为我不再使用此方法。

我不仅试图找到问题的解决方案,还试图在这个过程中学习。我在StackOverflow上问了一个上一个问题,以确切了解第一种方法是如何被实际处理的,以了解更多关于它的信息(Found a PHP function for absolute path and curious exactly how it works),现在我试图找出它是否是最佳选择或是否有更好的选择。

如果您有任何更好的解决方案,我愿意接受输入。

第一种方法:

function findRoot() {
    return(substr($_SERVER["SCRIPT_FILENAME"], 0, (stripos($_SERVER["SCRIPT_FILENAME"], $_SERVER["SCRIPT_NAME"])+1));

}

第二种方法:

echo realpath($_SERVER["DOCUMENT_ROOT"]);

我从来没有在实时服务器上使用任何一种方法来测试稳定性,所以我希望得到其他人的一些意见。优点和缺点将不胜感激。

1 个答案:

答案 0 :(得分:1)

真的,唯一最好的方法是在顶层设置一个常量/变量并引用它。大多数大型程序都这样做,因为它是查找实际文档根目录的最可靠方法。通常这是在安装程序中设置的。我通常会引导所有应用程序并在那里设置一个常量。

我通常会根据自己的行为编写新的设置。我只需添加一个.htaccess文件:

RewriteEngine On
RewriteRule (.*) index.php

在我的应用的根目录中。这会将所有请求(无论页面是否存在)路由到index.php。然后我设置了一些变量,包括一个配置文件,连接到db和类似的东西。然后解析网址以找出我需要包含的页面。这就是它。

此外,静态的东西,如javascript,css或图像,我只是放入一个公共文件夹(通常在他们自己的文件夹中按类型)并添加一个htaccess文件

RewriteEngine Off

因此,这些文件不会通过index.php进行路由。否则就是开销。您可以更改第一个htaccess文件中的规则以不包含这些文件,但我发现更容易使用两个单独的文件。

有一些微框架已被建议给我,例如slim,它应该适用于这些东西。