PHP用户目录的路径

时间:2012-08-27 01:12:08

标签: php path

有没有办法找出php中用户目录的路径?

在MAC OS X中,我可以使用$_SERVER['DOCUMENT_ROOT']找出文档所在的路径 被检索。这条路是:

/Users/jmlopez/www
我的计算机上的

因为我修改了httpd.conf文件。我相信它被设置为/Library/WebServer/Documents。在我大学的服务器中,它设置为:

/home/www/html

如果我想从名为doc.html的文件夹中检索testFolder,我可以使用$_SERVER['DOCUMENT_ROOT'].'/testFolder/doc.html'。这很好但我不知道如何 引用位于用户页面中的文档。

Mac OS X

用户页面设置为:

/Users/USERNAME/Sites

Linux服务器

我的大学服务器中的用户页面位于

/home/www/users/USERNAME/www

有没有办法在php中获取此路径,还是必须分析$_SERVER['SCRIPT_FILENAME']

我当前的解决方案

我目前获得$fileRoot

的解决方案
$temp = explode("/", $_SERVER['SCRIPT_FILENAME']); 
if ( $temp[1] == "home" ) { //Linux
    if ( $temp[3] == "users") { $fileRoot = '/home/www/users/'.$temp[4].'/www';} 
    else { $fileRoot = '/home/www/html/'.$temp[4];} 
} elseif ($temp[1] == "Users" ) { //Mac
    if ( $temp[3] == "www" ) { $fileRoot = '/Users/'.$temp[2].'/www/'.$temp[4]; }
    else { $fileRoot = '/Users/'.$temp[2].'/Sites'; }
}

这样,如果我在网站上工作,请说http://localhost/someSite

然后$fileRoot将指向:

/home/www/html/someSite 
在Linux中

/Users/jmlopez/www/someSite

在我的Mac中。

请注意$fileRoot = $_SERVER['DOCUMENT_ROOT'].'/someSite'适用于Mac和Linux。

如果我在我的个人网站上工作,请说http://localhost/~jmlopez

然后$fileRoot将指向:

/home/www/users/jmlopez/www
在Linux中

/Users/jmlopez/Sites

在我的Mac中。

问题是:有没有办法在不使用我发布的解决方案的情况下获得此路径?希望简单。

1 个答案:

答案 0 :(得分:2)

Apache 2.3.13(也在2.4.3中)有一个新功能,可能正是您所需要的。我昨天才读到它,但没有时间尝试一下。显然你需要一个非常新的apache,因为它只用了几个星期。

新的环境变量是“CONTEXT_DOCUMENT_ROOT”,它被添加到$ _SERVER变量中。根据更改控制,这将为您提供您为此目的添加的所需内容。除了版本控制说明和2.4 release notes

之外,看不到任何其他文档

“引入新的context_document_root和context_prefix,它提供有关非全局URI到目录映射(例如从mod_userdir或mod_alias)到脚本的信息。”资料来源:http://marc.info/?l=apache-cvs&m=130928191414740


编辑:

如果您没有最新版本的Apache,那么您可能拥有最佳解决方案(检查当前文件)。您也可以使用

__DIR__

获取您当前所在文件的目录,这可能会更容易一些?