Here's a problem that I've been running into lately - a misconfigured apache on a webhost. This means that all scripts that rely on $_SERVER['DOCUMENT_ROOT']
break. The easiest workaround that I've found is just set the variable in some global include files that is shared, but it's a pain not to forget it. My question is, how do I determine the correct document root programatically?
For example, on one host, the setup is like this:
$_SERVER['DOCUMENT_ROOT'] == '/htdocs'
The real document roots are:
test.example.com -> /data/htdocs/example.com/test
www.example.com -> /data/htdocs/example.com/www
And I'd like a script that's run from www.example.com/blog/
(on the path /data/htdocs/example.com/www/blog
) to get the correct value of /data/htdocs/example.com/www
.
On another host, the setup is a bit different:
$_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
Is there any solution to this? Or is the only way simply not to ever rely on $_SERVER['DOCUMENT_ROOT']
and fix all the software that I'm running on my sites? Fixing this on the hosting's side doesn't seem to be an option, I've yet to encounter a host where this is was configured correctly. The best I got was a document root pointing to www.example.com, which was at least inside open_basedir - they used yet another naming scheme, www.example.com would point to /u2/www/example_com/data/www/
.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…