有没有办法找出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'
。这很好但我不知道如何
引用位于用户页面中的文档。
用户页面设置为:
/Users/USERNAME/Sites
我的大学服务器中的用户页面位于
/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中。
问题是:有没有办法在不使用我发布的解决方案的情况下获得此路径?希望简单。
答案 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__
获取您当前所在文件的目录,这可能会更容易一些?