[regle] require avec arborescence absolue - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : [regle] require avec arborescence absolue (/showthread.php?tid=972) Pages :
1
2
|
[regle] require avec arborescence absolue - gtsoul - 25-03-2007 Bonjour, je travaille sur un projet un peu bizarre. En gros, c'est la folie au niveau de la localisation des sources. Prenons / comme racine du dossier des sources (situé dans /var/www/nomprojet en fait) dans /www sont les fichiers php "entiers" et interprétables dans /include/common quelques classes à inclure dans et dans /www/include/global d'autres fichiers à inclure Les fichiers php incluent en d'autres, qui à leur tour en incluent d'autres. Ex : /www/index.php va inclure /include/common/classe.class.php qui va à son tour inclure /include/common. Le hic c'est que le chemin des inclusions est toujours marqué de manière absolue (depuis la racine du site). Ca foire forcement. J'ai envie de corriger tout cela avec le minimum de modifications donc éviter de réécrire les chemins relatifs car on s'y perd très vite. Donc comment utiliser require avec une url absolue depuis une racine paramétrable ? RE: require avec arborescence absolue - orditeck - 25-03-2007 Je sais pas du tout si j'ai bien compris ton message mais je m'essais quand même, ça vaut mieux que rien. Je souhaite seulement répété que : Si par exemple est dans /var/www/gtsoul/ ./ = /var/www/gtsoul/ / = / (donc la base carrément du serveur) Donc tu fais un include comme suis : include('/var/www/start.inc.php'); include('/var/www/include/global/function.php'); include('/var/www/include/common/classe.class.php'); Je verrais pas pourquoi cette méthode ne fonctionnerait pas : elle se situe toujours via la racine du serveur lui même, et non du dossier actuel. Enfin, dit moi le si ce que je dis est pas clair ou que j'ai mal interprété ton problème. Edit : Sinon, tu as le ../ Si tu ne peux vraiment pas accéder à la racine du serveur en tant que tel, donc que la racine ( / ) = /www/ Donc, si / = /www (qui en réalité est /var/www/) Si tu as un fichier PHP dans www/ et tu veux qu'il accèse de /var par exemple, tu fais : ../ = /var/ Dans le sens où : include('../index.php'); = /var/index.php RE: require avec arborescence absolue - gtsoul - 25-03-2007 Le truc c'est que toutes les url sont absolues, / (racine du site) signifie /var/www/nomprojet (depuis la racine du disque) cad que /include/class.class est en réalité dans /var/www/nomprojet/include/class.class Mais dans aucune url tu ne trouveras le préfixe /var/www/nomprojet, car c'est quelque chose qui dépend de son installation Le chemin relatif est à éviter car les fichiers sont rangés à l'humeur du concepteur (on cherche un fichier dans un rep A qui va inclure le rep B qui contient à nouveau un fichier de A). Pour le moment, je ne vois qu'une chose, c'est de paramétrer la racine et de lui donner la valeur d'une constante. ex : PATH_PROJET/include/fichier.php RE: require avec arborescence absolue - orditeck - 26-03-2007 $root = "/var/www/"; include($root.'start.inc.php'); include($root.'include/global/function.php'); include($root.'include/common/classe.class.php'); Pour ma part c'est comme ça que je fonctionne et ça marche #1. Je crois que c'est la meilleure méthode. RE: require avec arborescence absolue - Plume - 26-03-2007 Y a moyen de récupérer le chemin depuis la racine & de le stocké donc dans cette dite varaible $root RE: require avec arborescence absolue - Dradge - 26-03-2007 Perso, toutes mes pages qui doivent en inclure une autre son appelée depuis la racine de mon site Web. Donc pas besoins de faire des include ou des require avec des chemins absolu RE: require avec arborescence absolue - kEkRkIkC - 26-03-2007 Tu peux obtenir le path de tes fichiers grace à la variable d'environnement DOCUMENT_ROOT : $pathsite = getenv('DOCUMENT_ROOT'); ou $pathsite = $_SERVER["DOCUMENT_ROOT"]; Après il ne te reste plus qu'a faire tes includes : include($pathsite."/forums/index.php"); include($pathsite."/index.php"); Ect RE: require avec arborescence absolue - gtsoul - 26-03-2007 Dans le cadre du travail d'un packageur, l'idéal serait de ne pas toucher au code. J'ai essayé de créer un virtual host sous apache, mais ca n'a pas marché. RE: require avec arborescence absolue - denisc - 27-03-2007 kEkRkIkC a écrit :Tu peux obtenir le path de tes fichiers grace à la variable d'environnement DOCUMENT_ROOT :C'est à mon avis la meilleure méthode... ou presque. J'utilise un système de fichier de configuration d'environnement: Code PHP :
Code PHP :
RE: require avec arborescence absolue - Plume - 27-03-2007 J'pensais à comme Eric, mais j'ai eu la main fainéante Citation :$pathsite = getenv('DOCUMENT_ROOT');Par contre, je crois que ça, c'est à oublier, mais je suis pas trop sûr. .. |