这是我最近遇到的一个问题 - 在webhost上配置错误的apache.这意味着所有依赖$_SERVER['DOCUMENT_ROOT']
break的脚本.我发现最简单的解决方法是在一些共享的全局包含文件中设置变量,但不要忘记它是一种痛苦.我的问题是,如何以编程方式确定正确的文档根?
例如,在一台主机上,设置如下:
$_SERVER['DOCUMENT_ROOT'] == '/htdocs'
真正的文件根源是:
test.example.com -> /data/htdocs/example.com/test www.example.com -> /data/htdocs/example.com/www
我想要一个从www.example.com/blog/
(在路径上/data/htdocs/example.com/www/blog
)运行的脚本来获取正确的值/data/htdocs/example.com/www
.
在另一台主机上,设置有点不同:
$_SERVER['DOCUMENT_ROOT'] == '/srv' test.example.com -> /home/virtual_web/example.com/public_html/test www.example.com -> /home/virtual_web/example.com/public_html/www
这有什么解决方案吗?或者是唯一的方法是不依赖$_SERVER['DOCUMENT_ROOT']
并修复我在我的网站上运行的所有软件?在托管方面修复这个似乎不是一个选项,我还没有遇到一个正确配置的主机.我得到的最好的是一个指向www.example.com的文档根,至少在open_basedir中 - 他们使用了另一个命名方案,www.example.com指出/u2/www/example_com/data/www/
.
在PHP5中,有一个魔术常量__FILE__
,它包含出现的文件的绝对路径.您可以将它与dirname结合使用来计算文档根目录.
您可以在配置文件中添加如下所示的语句
define ('DOCUMENT_ROOT', dirname(__FILE__));
这应该可以解决问题