francoisch Posté 6 Septembre 2009 Posté 6 Septembre 2009 Bonjour Jai une succession d'Include de ce genre : Dossier racine (niveau 0)Fonction1Include dossier2/fonction2 Dossier2 (niveau 1) Fonction2 Include dossier3/fonction3 Dossier3 (niveau 2) Fonction3 include ("../../admin2/lectureProfil.php"); (niveau 2 : je met ../../) ... dossier admin2 lectureProfil.php require_once("../../connexion.php"); (niveau 2 : je met ../../) ... Jusque là, pas de problème, ça marche. Mon problème commence quand je veux appeler la même fonction lectureProfil.php dun autre niveau de dossier que le niveau 2 : Dossier racine (niveau 0)Fonction10include ("admin2/lectureProfil.php"); ... car les Include (connexion.php, ...) dans cette fonction lectureProfil.php tiennent compte du niveau dappel initial (niveau 2 dans le premier exemple, niveau 0 dans le deuxième exemple). Alors, comment faire ? Jai raté qqechose ? Par avance merci de votre aide. Francois
SStephane Posté 6 Septembre 2009 Posté 6 Septembre 2009 Hello, Pourquoi ne pas inclure la racine de ton site dans le php.ini et appeler par rapport à la racine, ça t'éviterait ce type de souci (include_path)
francoisch Posté 6 Septembre 2009 Auteur Posté 6 Septembre 2009 Merci de ta réponse. Mais, est ce que je peux qqechose sur un php.ini qui doit être sur le serveur, chez mon hébergeur? Francois
SStephane Posté 6 Septembre 2009 Posté 6 Septembre 2009 Tentes ceci : ini_set('include_path',ini_get('include_path').':/path/to/tonsite:'); Si ça ne fonctionne pas, effectivement, tu ne peux pas grand chose sur côté d'include_path Il te faudra faire des appels avec une variable prédéfinie, du genre 'document_root' (à vérifier, je l'utilise jamais)
b0b0 Posté 6 Septembre 2009 Posté 6 Septembre 2009 Bonjour, pourquoi ne pas utiliser un truc du genre : include(dirname (__FILE__).'/../admin2/lectureProfil.php') ; ainsi l'include sera toujours basé sur le path du fichier en cours ... b0b0
francoisch Posté 6 Septembre 2009 Auteur Posté 6 Septembre 2009 Merci tout d'abord de vos réponses. Vous m'ouvrez là des horizons tout nouveaux, que je vais explorer. Merci. Francois
francoisch Posté 7 Septembre 2009 Auteur Posté 7 Septembre 2009 Bonjour Si jai bien compris, dirname (__FILE__) donne le chemin absolu depuis le fichier dans lequel il est émis. Si jémets un dirname (__FILE__) depuis la racine, jaurai le chemin absolu jusquà la racine, par exemple : /homez.110/fctest/www. En émettant mon Include depuis le niveau 0, je lécris donc : include(dirname (__FILE__).'/admin2/lectureProfil.php') Si je lémet depuis un fichier situé dans un dossier de niveau 1, jaurai le chemin absolu jusquà ce dossier de niveau 1, par exemple : /homez.110/fctest/www/admin2 En émettant mon Include depuis le niveau 1, je lécris donc : include(dirname (__FILE__).'/../admin2/lectureProfil.php'). Mon problème : cet Include est émis depuis le même fichier, lui-même appelé depuis différents fichiers à différents niveaux ; je ne peux pas « moduler » mon Include suivant le niveau dappel initial. Suggestion : peut-être « décortiquer » le résultat du dirname (__FILE__) pour ne conserver que /homez.110/fctest/www/ ; ça aurait lavantage de la stabilité. A votre avis ? Francois
Dan Posté 7 Septembre 2009 Posté 7 Septembre 2009 Ou alors (pour autant que tu n'aies pas l'Open_Basedir d'activé) changer tes include(rep1/rep2/fichier.php) par include($_SERVER['DOCUMENT_ROOT']."/rep1/rep2/fichier.php"); Ces derniers fonctionneront de partout dans ton site...
francoisch Posté 7 Septembre 2009 Auteur Posté 7 Septembre 2009 Merci de ta réponse. Oui, je vais faire ça, au moins dans mes fichiers qui sont appellés depuis différents niveaux. Merci tous de votre aide. Francois
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant