|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2010 Messages : 53 ![]() |
Bonjour à tous et à toutes.
Je me heurte depuis pas mal de temps à un pitit problème. J'ai dans un dossier qui peut-être situé n'importe où par rapport au dossier racine deux sous-dossiers, dans lesquels j'ai plusieurs fichiers comme cela : Dossier programme | |__________ Dossier A | | | |______autre.php | | | |______Sous-dossier B | * | | * | | * |______fichier.txt | | |__________Dossier B | | | | | |________sous-programme.php | | |__________programme.php Cela devrait fonctionner comme ça : programme.php inclut sous-programme.php, sous-programme.php inclut autre.php et lit fichier.txt. Malheureusement je ne suis pas parvenu à un moyen pour inclure les fichiers. J'ai ça pour l'instant : sous-programme.php : Code php :
programme.php : Code php :
include 'Dossier B/sous-programme.php'; Mais cela me renvoie une erreur dans le sous-programme (comme quoi les fichiers autre.php et fichier.txt n'ont pas été trouvés et la réaction en chaîne avec le reste du programme). Un moyen sans passer par les URLs d'inclusion (ce qui n'est vraiment pas optimal). Merci d'avance de votre aide. |
||
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2010 Messages : 53 ![]() |
Non non, je suis sûr et certain du nom du répertoire parent de sous-programme.php (c'est pour l'exemple), mais je n'arrive pas à remonter à la racine...
|
|
|
00
|
|
|
#4 |
|
Membre chevronné
![]() ![]() Inscription : juillet 2006 Messages : 1 194 ![]() |
Ha ok.
À ta place, je commencerais par me débarrasser des espaces dans les noms de dossier. Ça pourrait très bien être une cause d'erreurs. Ensuite, c'est la constante $_SERVER qui devrait te permettre de retrouver le dossier principale. |
|
|
01
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2010 Messages : 53 ![]() |
$_SERVER['SCRIPT_FILENAME'] ?
Déjà tenté, inutile apparemment... Le truc c'est qu'avec include PHP lit systématiquement les fichiers à partir du dossier actif... |
|
|
00
|
|
|
#6 |
|
Membre chevronné
![]() ![]() Inscription : juillet 2006 Messages : 1 194 ![]() |
Il y a d'autres clés utiles à $_SERVER.
Mais le plus simple c'est d'avoir un premier script à la racine qui définisse une constante "ROOT" ensuite à partir de ce script tu fais ton premier include qui lui fera le second etc. toujours en utilisant la constante "ROOT" définie au début. À part ça, à ma connaissance y a pas de moyens très pertinents de recomposer le chemin absolu (définir proprement un php.ini et son document_root pour chaque site php sur un même serveur me parait rébarbatif). Sinon, plutôt que de penser fichier, tu pourrais penser classe : chaque fichier est une classe et tu surcharges __autoload dans ton fichier "maitre" pour ouvrir le bon fichier en fonction de la classe. Je ne pense pas que tu choisiras cette alternative mais il est utile de la connaître. |
|
|
00
|
|
|
#7 | |||
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 771 ![]() |
Citation:
Par contre, ce qui en principe change très peu (et jamais en te prenant par surprise), c'est la structure générale de l'arborescence. Un chemin absolu à partir du fichier qui fait l'include est donc la solution classique. Code :
|
|||
|
|
00
|
|
|
#8 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2010 Messages : 53 ![]() |
Merci beaucoup à vous deux, la solution d'Herode me convient parfaitement.
Je passe en résolu. |
|
|
00
|
|
|
#9 |
|
Membre chevronné
![]() ![]() Inscription : juillet 2006 Messages : 1 194 ![]() |
|
|
|
00
|
|
|
#10 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2010 Messages : 53 ![]() |
En fait __DIR__ me pose un problème car les serveurs sur lesquels je vais installer mon application ne tournent pas tous sur une version récente de PHP (là il faut au moins la 5.3 pour que ça marche).
Voilà-voilà, encore merci. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com