[Résolu] Problème d'arborescence avec require_once( )

Problème d'arborescence avec require_once( ) [Résolu] - PHP - Programmation

Marsh Posté le 24-08-2007 à 08:27:14    

Bonjour à tous,
 
Voilà, j'ai un site avec, à sa racine, un fichier de config contenant tous les chemins vers les différentes librairies déclarés en constantes, ex: define("LIB_PDF", "lib/fpdf153/" );
 
Voici tout d'abord un petit aperçu de l'arborescence du site pour mieux comprendre :  
 
racine du site / config.php
racine du site / répertoireX / répertoireY / toto.php
racine du site / lib / fpdf153 / lib.php
 
Dans chacune de mes pages j'appelle le fichier de config via "require_once" en lui précisant correctement le chemin, ex: require_once("../../config.php" );
 
Le problème se pose lors je veux appeller le fichier "lib.php" depuis le fichier "toto.php". Dans "toto.php" j'appelle donc mon fichier de config comme ci-dessus : require_once("../../config.php" );
Du coup, je devrais accéder à la lib FPDF en rajoutant "../../" comme ceci : "../../".LIB_PDF
 
N'y aurait-il pas une meilleure façon de faire ? Par exemple, en déclarant autrement mes constantes dans le fichier de config afin qu'elles soient accessible de partout sans se soucier du chemin ?
 
Pour info, je n'ai pas accès au serveur ou à la config Apache, donc impossible pour moi de créer des alias ou des choses comme ça.
 
Merci d'avance pour vos réponses !
Lionel.


Message édité par pot2yaourt le 28-08-2007 à 20:51:41
Reply

Marsh Posté le 24-08-2007 à 08:27:14   

Reply

Marsh Posté le 24-08-2007 à 10:22:36    

Code :
  1. define('ROOT_DIR', $_SERVER['DOCUMENT_ROOT']); // supposition (tu peux aussi travailler dans un sous-répertoire)
  2. define('FPDF_DIR', ROOT_DIR . '/lib/fpdf153');
  3.  
  4. // toto.php:
  5. require ROOT_DIR . '/config.php';
  6. require FPDF_DIR . '/lib.php';


 
Si tu veux utiliser des chemins relatifs, il est recommandé d'utiliser dirname(__FILE__) avant le chemin, ce qui t'assure qu'il sera juste dans tous les cas de figure, et donc aussi lorsque le fichier incluant est déjà lui-même inclus dans un autre.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 28-08-2007 à 20:51:21    

sielfried a écrit :


Si tu veux utiliser des chemins relatifs, il est recommandé d'utiliser dirname(__FILE__) avant le chemin, ce qui t'assure qu'il sera juste dans tous les cas de figure, et donc aussi lorsque le fichier incluant est déjà lui-même inclus dans un autre.


 
J'ai utilisé dirname(__FILE__) mais le seul petit problème c'est que je développe sous Windows et que le serveur de prod. se trouve, lui, sous Linux.  
 
Du coup, pour le répertoire qui contient mes classes j'ai défini les constantes ci-dessous :

Code :
  1. define("ROOT_DIR", dirname(__FILE__));  //la racine du site
  2. define("CLASS_PATH", ROOT_DIR."\\class\\" ); //le répertoire qui contient les classes


Et j'obtiens donc : F:\Workspace\SiteInternet\class\
 
Par contre, une fois sur le serveur, je devrais bien penser à remplacer les \\ en / lorsque je déclare mes constantes.
 
En tous cas merci pour le coup de main !!
A+
Lionel.

Reply

Marsh Posté le 28-08-2007 à 21:02:30    

Utilise / dans tous les cas, ça marche sous Windows.


Message édité par sielfried le 28-08-2007 à 21:02:38

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 29-08-2007 à 09:53:47    

Plus précisément, utilise '/' pour les chemins utilisé uniquement dans les instructions php et la constante 'DIRECTORY_SEPARATOR' quand tu fais appel à d'autres programmes ('exec()' et autres instruction du genre)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed