|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||||
|
Membre du Club
![]() Inscription : août 2005 Messages : 258 ![]() |
Bonjour,
Cela fait quelques jours que je suis bloqué sur un point plutôt facile... Mais ça veut pas. Mon arborescence : Code X :
L'index.php de la racine appelle config1.php par un include, lui-même chargeant config2.php si besoin. Ensuite, le contenu change, selon le fichier du répertoire. Problème : je suis en trainb de faire un sous-domaine, donc le fichier d'appel est un niveau plus bas : Code X :
Quand je charge index_SD.php (en ajoutant un ../), config1.php est bien inclus, mais ensuite j'ai des erreurs pour config2.php, sans rien changer. J'ai l'erreur Warning: Citation:
Voyez-vous d'où cela peut venir ? J'ai l'impression que partir d'un répertoire au lieu de la racine perturbe tout... Merci d'avance Jarodd |
|||||
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() Inscription : juin 2002 Messages : 1 013 ![]() |
si tu nous montrais le code des include ce serait peut-être plus simple à analyser...
|
|
|
00
|
|
|
#3 | ||||||||||
|
Membre du Club
![]() Inscription : août 2005 Messages : 258 ![]() |
index.php :
Code :
Code :
Code :
Code :
Code :
|
||||||||||
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() |
Normal car config2.php est appellé avec un chemin relatif "./" et cela devrait etre "../".
En fait les inclusions se basent sur le fichier appellé en entrée , c'est a dire index_SD et les chemins relatifs (meme les inclusions incluses , attention faut suivre) sont donc toujours '../' dans ce cas. tu vas me répondre que ca ne te va pas car du coup quand tu vas appeller index.php, config2 ne va plus passer. Deux solutions, soit utiliser des url absolues, soit passer en variable le début du chemin relatif (genre '.' ou '..' ou meme '../..' ) dans tes pages et la faire précéder tes chemins d'inclusions. exemple index.php: $rel ='./' include ($rel.'config1.php'); config1.php include ($rel.'config2.php'); |
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : août 2005 Messages : 258 ![]() |
Bonsoir,
Je ne suis pas sûr d'avoir bien compris ce qu'il fallait faire, et à quoi cela allait servir Il faut mettre cette variable au début de chaque fichier et remplacer include (./config1.php'); par include ($rel.'config1.php'); c'est ça ? |
|
|
00
|
|
|
#6 |
|
Membre éclairé
![]() |
bonjour,
Personnellement pour éviter de ne pas me soucier de l'arborescence de mon site, j'utilise le chemin absolue pour faire mes includes : Code :
include_once($_SERVER['DOCUMENT_ROOT']."/templates/default/accueil.php"); |
|
|
00
|
|
|
#7 | ||
|
Membre régulier
![]() Inscription : janvier 2007 Messages : 85 ![]() |
Pour completer l'explication de raideman,
le chemin absolu est le chemin complet du fichier. le chemin relatif est le chemin du fichier à trouver par rapport à celui qui l'appelle. Ton arborescence : Code X :
le fichier config1 est inclus dans index.php lorsqu'il s'execute et qu'il demande un include du fichier config2 on se base à la position de index.php pour chercher config2.php Second cas : (celui qui plante) le fichier config1 est inclus dans index_SD.php, lorsqu'il s'execute et qu'il demande un include du fichier config2 on se base à la position de index_SD.php pour trouver config2.php L'erreur provient du fait d'utiliser des chemins relatifs qui se basent sur la position du fichier qui appelle le include. C'est pour cette raison qu'on te conseille d'utiliser des chemins absolus, ou de passer en paramètre le chemin du include. Pour ma part, je créé un DEFINE contenant le chemin absolu pour chacun de mes dossiers 'sensibles'. @++
__________________
"Soyez les changements que vous aimeriez voir dans le monde" Mahatma Gandhi |
||
|
|
00
|
|
|
#8 | |||||
|
Membre du Club
![]() Inscription : août 2005 Messages : 258 ![]() |
Ok, je commence à piger le fonctionnement, mais cela ne marche pas encore. Avant d'ajouter des variables ou des constantes, je vais essayer avec $_SERVER['DOCUMENT_ROOT'].
Alors mon fichier index qui fonctionne : Code :
Code :
L'erreur : Citation:
|
|||||
|
|
00
|
|
|
#9 | ||
|
Membre éclairé
![]() |
D'après tes messages le problème viens de ta config d'apache, car tu utilise un alias et $_SERVER['DOCUMENT_ROOT'] ne sera utile d'avec un serveur virtuel....
Bon bref essais : Code :
|
||
|
|
00
|
|
|
#10 | |
|
Membre du Club
![]() Inscription : août 2005 Messages : 258 ![]() |
Non toujours les mêmes erreurs...
Cela affiche bien le chemin de ma page d'accueil. Code :
include_once($localPath . "index.php"); Citation:
|
|
|
|
00
|
|
|
#11 |
|
Membre du Club
![]() Inscription : août 2005 Messages : 258 ![]() |
Bonsoir,
Personne n'a une idée ? Cela commence à devenir urgent et je reste bloqué sur cette erreur |
|
|
00
|
|
|
#12 |
|
Invité régulier
![]() Inscription : mai 2006 Messages : 16 ![]() |
tu peux faire l'appel de tous tes fichiers en include_once dans index ou chacun appel un autre .. par contre faut pas oublier que même si tu es rendu au 4e fichier qui est appelé les uns en dessous des autres .. le lien sera toujours par rapport à qui l'appel
J'explique index.php inc/config1.php inc/config2.php inc/lvl2/config3.php dans index tu vas trouver include("inc/config1.php"); dans config1.php tu vas trouver include("config2.php"); dans config2.php tu vas trouver include("lvl2/config3.php"); J'espere avoir répondu à ton problème |
|
|
00
|
|
|
#13 |
|
Futur Membre du Club
![]() Inscription : juillet 2004 Messages : 13 ![]() |
Bonsoir,
Est-il possible d'essayer dans un répertoire de test sur le net? Car, comme l'a dit TucSale, il s'agit apparemment d'un problème Apache. Donc peut-être cela marchera-t-il "en prod" (sur le net), vu que ici, tu es en local... Je te dis ça, car je viens de tester en local chez moi. Avec le $_SERVER['DOCUMENT_ROOT'], ça fonctionne !! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com