Voici un problème auquel j'ai récemment été confronté - un apache mal configuré sur un hébergeur. Cela signifie que tous les scripts qui s'appuient sur $_SERVER['DOCUMENT_ROOT']
break. La solution de contournement la plus simple que j'ai trouvée consiste simplement à définir la variable dans certains fichiers d'inclusion globaux partagés, mais il est difficile de ne pas l'oublier. Ma question est, comment puis-je déterminer la racine de document correcte par programme?Comment déterminer par programme la racine du document en PHP?
Par exemple, sur un hôte, la configuration est comme ceci:
$_SERVER['DOCUMENT_ROOT'] == '/htdocs'
Les racines réelles du document sont:
test.example.com -> /data/htdocs/example.com/test
www.example.com -> /data/htdocs/example.com/www
Et je voudrais un script qui est exécuté à partir www.example.com/blog/
(sur le chemin /data/htdocs/example.com/www/blog
) pour obtenir la valeur correcte de /data/htdocs/example.com/www
.
Sur un autre hôte, la configuration est un peu différent:
$_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
Y at-il une solution à cela? Ou est le seul moyen de ne jamais compter sur $_SERVER['DOCUMENT_ROOT']
et de réparer tous les logiciels que je cours sur mes sites? Corriger cela sur le côté de l'hébergement ne semble pas être une option, je n'ai pas encore rencontré un hôte où il a été configuré correctement. Le mieux que j'ai obtenu était une racine de document pointant vers www.example.com, qui était au moins à l'intérieur de open_basedir - ils utilisaient encore un autre schéma de nommage, www.example.com pointerait vers /u2/www/example_com/data/www/
.
Certains scripts que j'ai installés sont "trop intelligents" et savent quel répertoire (par rapport à la racine de document théorique) ils sont installés, et l'ajoutent à la racine du document (après l'avoir récupéré de la base de données). Je devrais encore modifier le code pour chaque répertoire pour dépouiller les annuaires ... ou pas? –