[PHP] pb de chemin relatif/absolu avec un include

pb de chemin relatif/absolu avec un include [PHP] - Programmation

Marsh Posté le 28-06-2001 à 15:45:52    

Question 1 :
-Comment peut on retourner à la racine du site quelque soit l'endroit où l'on est, que l'on soit déjà a la racine ou bien à 3-4 répertoires en dessous.
 
 
S'il n'y a pas de réponse à la question 1 :
-j'ai besoin de faire un require d'un fichier. Le pb est que ce fichier n'est pas toujours au même endroit par rapport au fichier d'où il est appelé (même répertoire, au dessus...). Il s'agit du fichier de config de la BD
 
Je n'arrive pas à écrire le chemin relatif qu'il convienne à tous les cas (pb posé ci dessus), je voudrais donc passer en absolu "http://....free.fr/config/info.php3"
Or ça ne fonctionne pas, les variables ne sont pas prises en compte dans ce cas. Si je le met en relatif "../config/info.php3", ça marche
 
Comment faire?
 
Merci de vos réponses

Reply

Marsh Posté le 28-06-2001 à 15:45:52   

Reply

Marsh Posté le 28-06-2001 à 16:08:07    

cf la variable $DOCUMENT_ROOT qui te renvoie toujours ds le repertoire racine du serveur (pas du site, donc faut indiquer les chemins relativement a ce rep)

Reply

Marsh Posté le 28-06-2001 à 16:24:50    

$DOCUMENT_ROOT est une variable Apache !
 
Pour les pauvres utilisateurs Windows qui n'y ont pas accès !
 
Mettre un chemin absolut du genre :  
 
include("/inetpub/wwwroot/toto.inc" );


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 28-06-2001 à 16:40:54    

Je suis hébergé par free et donc je sais pas commment faire car  
1.je ne connais pas le type de serveur  
2.que dois je mettre apres le $DOCUMENT_ROOT?  
"$DOCUMENT_ROOT/login/stats/bidon.php3"
"$DOCUMENT_ROOT/login.free.fr/stats/bidon.php3"

Reply

Marsh Posté le 28-06-2001 à 17:35:37    

Ben y vaut quoi $DOCUMENT_ROOT ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 28-06-2001 à 18:18:30    

fkayou a écrit a écrit :

Question 1 :
-Comment peut on retourner à la racine du site quelque soit l'endroit où l'on est, que l'on soit déjà a la racine ou bien à 3-4 répertoires en dessous.
 
 
S'il n'y a pas de réponse à la question 1 :
-j'ai besoin de faire un require d'un fichier. Le pb est que ce fichier n'est pas toujours au même endroit par rapport au fichier d'où il est appelé (même répertoire, au dessus...). Il s'agit du fichier de config de la BD
 
Je n'arrive pas à écrire le chemin relatif qu'il convienne à tous les cas (pb posé ci dessus), je voudrais donc passer en absolu "http://....free.fr/config/info.php3"
Or ça ne fonctionne pas, les variables ne sont pas prises en compte dans ce cas. Si je le met en relatif "../config/info.php3", ça marche
 
Comment faire?
 
Merci de vos réponses  




 
 
Bha, si tu sais ou tu es & où se trouve le fichier à inclure, normalement il n'y a pas de problème.
 
racine du site
 
    ---/common (répertoire où est fichier à inclure)
   |
   |
   |---/home/|
   |         |
   |         |
   |         |-----/truc/
   |         |
 
- Si tu es dans le répertoire trucs, pour inclure ton fichier :
 
include("../../common/fichier.inc" )
 
- Si tu es dans le répertoire home, pour inclure ton fichier :
 
include("../common/fichier.inc" )
 
- Si tu es à la racine, pour inclure ton fichier :
 
include("common/fichier.inc" )
 
@+

 

[edtdd]--Message édité par fly LM--[/edtdd]

Reply

Marsh Posté le 10-05-2006 à 21:58:17    

Bonjour,
 
Je suis confronté au même problème, sauf que dans le cas évoqué, comme l'écrit FLY LM, il suffit d'indiquer le chemin relatif une fois pour toute.
 
Dans mon cas, j'utilise des pseudo-framres (ah, que je regrette la simplicité des frames de ce point de vue !). J'ai donc dans le DIV correspondant au menu du site un include ... du fichier menu (disons : menugauche.php)
 
disons : page1.php appelle (include) menugauche.pgp. usque là ça va.
 
Mais au gré de la navigation, page1.php va être remplacé par un page2.php, située dans un autre répertoire (pour des raisons d'organisation). Or il faut que page2.php fasse aussi l'include de menugauche.php... et les chemins relatifs de ce menu deviennent faux (parce que désormais liés au contexte de page2.php).
 
J'essaie en vain de piger comment utiliser les variables de type PHP_SELF ou DOCUMENT_ROOT, mais en vain : je dois rater sur la syntaxe après echo.
EN outre ce que je cherche à obtenir ce n'est pas le chemin du document courant, mais bien le chemin du document à charger !
 
Voilà, si quelqu'un peut me débloquer, je tourne en rond...
 
Même soucis pour les appels de fichiers .css, puisque tous les fichiers appelant ne sont pas dans le même chemlin relatif, et je ne parvient pas à y remédier.

Reply

Marsh Posté le 11-05-2006 à 11:20:26    

Pour faire simple je me contente de définir une variable chemin pour la racine (http://etc....), que je concatène avec le chemin des sous-répertoires finaux. Pas de variable d'environnement utilisée, donc, la seule contrainte étant de modifier en dur la variable du chemin de la racine (en test local, les variables d'environnement envoient un chemin depuis c:... et ça ne fonctionne pas... ou je ne sais le faire fonctionner).
Je ferai passer ma variable de chemin en global.
 
J'ignore si c'est la bonne méthode, ni la plus élégante, mais ça fonctionne.

Reply

Marsh Posté le 22-06-2011 à 15:40:51    

Bonjour,
 
Je rencontre actuellement le même problème en local.
Le serveur (Wamp) renvoie des "No such file or directory in C:\wamp\www\index.php" alors que les liens sont bien précédés du ../ réglementaire.
 
Auriez-vous des idées ?
 
Par avance, merci :)

Reply

Marsh Posté le 07-11-2013 à 00:49:09    

J'ai eu un problème analogue avec mon site chez free.fr . Grâce à vos commentaires j'ai trouvé une solution qui fonctionne bien sur mon site hébergé (chez free.fr), mais qui m'envoie erreur 404 en local (j'utilise MAMP 1.9.1, pour Mac OS X 10.4).
Dans plusieurs pages de mon site j'appelle "findepage.php" par require("findepage.php" ); ou bien par require("../findepage.php" );
Dans ce "findepage.php", j'appelle une page d'aide :
<A HREF="aide.php" TARGET="_blank">Aide</A>
Cette page "aide.php" se trouve à la racine ; appelée par "findepage.php" tout allait bien, mais appelée par "../findepage.php" j'avais erreur 404.
La solution est venue en ajoutant ../ devant "aide.php", c'est-à-dire :
<A HREF="../aide.php" TARGET="_blank">Aide</A>
Ça marche même sans les points : <A HREF="/aide.php" TARGET="_blank">Aide</A> :)  
 
Je pense que ça marche chez free.fr, car mon "aide.php" est à la racine du site. Donc ../ fait remonter d'un niveau lorsque c'est nécessaire, et ne fait rien lorsque on est déjà à la racine.
Par contre en local, ../ fait remonter d'un niveau à tous les coups (car mon dossier est loin de la racine) et on n'est pas toujours dans le bon dossier. Mais c'est en local, et ça ne gêne que moi. :ange:  
Si vous avez une autre solution, je suis preneur.
 :hello:

Reply

Marsh Posté le 07-11-2013 à 00:49:09   

Reply

Marsh Posté le 07-11-2013 à 10:00:11    

Dans le fichier appelant, utilisez __DIR__ (>= php 5.3) ou dirname(__FILE__) (< php 5.3) pour retrouver votre chemin. Plus qu'à compter le nombre de dossiers jusqu'à la racine.

Reply

Sujets relatifs:

Leave a Replay

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