Aller au contenu

Include et niveaux de dossiers


Sujets conseillés

Posté

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

Posté

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)

Posté

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)

Posté

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

Posté

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

Posté

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

Veuillez vous connecter pour commenter

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



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