Вот проблема, с которой я столкнулся в последнее время - неправильно настроенный apache на веб-хосте. Это означает, что все сценарии, использующие $_SERVER['DOCUMENT_ROOT']
, прерываются. Самый простой обходной путь, который я нашел, - это просто установить переменную в некоторых глобальных включаемых файлах, которые являются общими, но не стоит забывать об этом. У меня вопрос, как мне определить правильный корень документа программно?
Например, на одном хосте установка выглядит так:
$_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/
.