Aller au contenu

Include et niveaux de dossiers


francoisch

Sujets conseillés

Bonjour

Jai une succession d'Include de ce genre :

Dossier racine (niveau 0)
Fonction1
Include 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)
Fonction10
include ("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

Lien vers le commentaire
Partager sur d’autres sites

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)

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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...

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...