Oui, c'est un truc tout bête mais que je n'ai compris que récemment :
base/rep1/rep2/fichier.php
base/inclure.php
Si tu as l'arborescence si dessus, tu peux ecrire dans fichier.php :
include '../../inclure.php';
PS : Rien à voir mais Adrien, je t'ai envoyé un MP
tu peux même enchainer à volonté :
../../../../..
en plus, si tu es ici :
/rep/index.php
et que tu as un fichier là :
/fonction.php
le lien ../../../../../fonction.php te permet de retrouver tout de même fonction.php ^^ (bon c'est crade).
Mais en gardant un principe tout simple pour ne pas se perdre dans ton arborescence, c'est de placer un fichier flag à la racine, et de remonter d'un niveau jusqu'à atteindre ce fichier. Quand tu l'as, tu es sûr de ta position.
kéké
Si tous les fichiers que tu dois inclure dans tes scripts se trouvent dans le répertoire include, tu peux redéfinir dynamiquement la directive php include_path, de sorte que php aille directement chercher tes fichiers là-dedans.
Ainsi, tu écrirais quelque part, au début de tes scripts ( dans un fichier de configuration chargé à chaque fois par exemple ) :
Code PHP :
<?php
set_include_path(
get_include_path()
.PATH_SEPARATOR.realpath('/chemin/vers/include');
Et à partir de n'importe où dans ton arborescence, l'appel à un fichier se trouvant dans ton répertoire include marchera
Code PHP :
<?php
require('monfichier.php');
(22-01-2009, 11:36 PM)Allwise a écrit : [ -> ]Une autre solution serait d'utiliser le chemin absolu plutôt que le chemin relatif :
Code PHP :
<?php
$cheminAbsolu = '/home/monsite/www/include/';
require($cheminAbsolu.'monfichier.php');
En surtout plus pratique pour éviter les globals et pour ne pas se tromper ^^
Code PHP :
<?php
define( 'APPLICATION_PATH', realpath(dirname(__file__)) );
require(APPLICATION_PATH . '/monfichier.php');
Ouaip, c'est mieux, mais mon bout de code n'était là que pour l'exemple, pas comme la solution finale
Si on donne la solution au problème c'est pas marrant
iffle:
Merci à tous pour vos réponses, ça m'est très utile
Merci !!!
De manière générale, soit tu conserves un lien absolu vers la racine, soit pour chaque fichier de chaque répertoire, tu définis une variable concaténer à ton adresse afin qu'elle définisse le chemin à suivre.
Personnellement je ne suis pas de cette avis, tu te fais chier pour rien a rester en chemin absolue.
Avec un chemin relatif ça marchera dans tous les cas et pas besoin de créer une variable et de la concaténer a chaque fois: je trouve que c'est une perte de temps, mais ça n'engage que moi.