OVH Cloud OVH Cloud

construction d'url

5 réponses
Avatar
Laforest
Bonjour,
J'ai une page php, qui construit un lien vers une page présente dans un
dossier Accueil.
Plus précisemment:
Je suis dans /var/www/site/ (pour l'instant en local)
je récupère cette adresse pas getcwd()
Je fais donc :

$racine=getcwd()."/Accueil";

Puis diverses manip autres, enfin je construis mon lien :

echo("<a href=\"".$racine."/accueil.php\"> cliquez ici </a>");

Je vois en mettant le curseur de ma souris sur le lien que s'affiche
l'adresse de direction :

http://localhost/var/www/site/Accueil/accueil.php,
et bien sûr si je clique, je tombe sur une erreur 404 not found.

La bonne adresse devrait-être, je pense :
http://localhost/site/Accueil/accueil.php

Pourtant si je teste la valeur de ma variable $racine
retourne /var/www/site/Accueil

Comment faire pour construire la bonne adresse? et pourquoi ce comportement?
J'imagine que si j'étais sur l'adresse de mon site au lieu d'être en local
cela marcherait (quoique...), mais en attendant, comment faire, et surtout,
qu'est-ce qui merde?

Merci

Michel

5 réponses

Avatar
bruno modulix
(snip)

Plus précisemment:
Je suis dans /var/www/site/ (pour l'instant en local)
je récupère cette adresse pas getcwd()
Je fais donc :

$racine=getcwd()."/Accueil";
Puis diverses manip autres, enfin je construis mon lien :
echo("<a href="".$racine."/accueil.php"> cliquez ici </a>");

Je vois en mettant le curseur de ma souris sur le lien que s'affiche
l'adresse de direction :

http://localhost/var/www/site/Accueil/accueil.php,
et bien sûr si je clique, je tombe sur une erreur 404 not found.

La bonne adresse devrait-être, je pense :
http://localhost/site/Accueil/accueil.php

Pourtant si je teste la valeur de ma variable $racine
retourne /var/www/site/Accueil
Oui, parce que getcwd() te renvoie le chemin en local sur le serveur, et

non pas l'URL.

Et comme c'est une adresse relative, elle est résolue par rapport au
domain name... qui est localhost... donc le résultat est parfaitement
normal (à défaut d'être celui que tu voudrais...)

Comment faire pour construire la bonne adresse?
regarde du côte de $_SERVER

http://www.php.net/reserved.variables

et pourquoi ce comportement?
cf ci-dessus


J'imagine que si j'étais sur l'adresse de mon site au lieu d'être en local
cela marcherait (quoique...),
non, cf ci-dessus.


HTH
Bruno

Avatar
Gerald Niel
Le samedi 07 août 2004 à 09:45 GMT, Laforest écrivait sur
fr.comp.lang.php :

Pourtant si je teste la valeur de ma variable $racine
retourne /var/www/site/Accueil


Qui devrait retourner "/Accueil".

Comment faire pour construire la bonne adresse ?


Ne pas utiliser getcwd().

@+
--
Moralite, au reboot suivant, la machine a mis une demi-heure de
plus pour booter, c'etait le rm -r /tmp qui nettoyait le montage
nfs.
-+- RMD in Guide du linuxien pervers - "Et paf le montage nfs !" -+-


Avatar
CrazyCat
Laforest wrote:

Bonjour,
J'ai une page php, qui construit un lien vers une page présente dans un
dossier Accueil.
Plus précisemment:
Je suis dans /var/www/site/ (pour l'instant en local)
je récupère cette adresse pas getcwd()
Je fais donc :

$racine=getcwd()."/Accueil";


getenv("SERVER_NAME"); te donnera plutot localhost (ou, si tu héberges
ton site ailleurs, l'url de ton site).

--
Tout sur les eggdrops
http://www.c-p-f.org
ML @

Avatar
Leonick
"Laforest" a écrit dans le message de
news:411415f4$0$15285$
Bonjour,
J'ai une page php, qui construit un lien vers une page présente dans un
dossier Accueil.
Plus précisemment:
Je suis dans /var/www/site/ (pour l'instant en local)
je récupère cette adresse pas getcwd()
Je fais donc :

$racine=getcwd()."/Accueil";

Puis diverses manip autres, enfin je construis mon lien :

echo("<a href="".$racine."/accueil.php"> cliquez ici </a>");

Je vois en mettant le curseur de ma souris sur le lien que s'affiche
l'adresse de direction :

http://localhost/var/www/site/Accueil/accueil.php,
et bien sûr si je clique, je tombe sur une erreur 404 not found.

La bonne adresse devrait-être, je pense :
http://localhost/site/Accueil/accueil.php

Pourtant si je teste la valeur de ma variable $racine
retourne /var/www/site/Accueil

Comment faire pour construire la bonne adresse? et pourquoi ce comportement?
J'imagine que si j'étais sur l'adresse de mon site au lieu d'être en local
cela marcherait (quoique...),
Non, même sur le site, cela donne le chemin absolu

En local, pour moi, ça donne c:site...

Pour obtenir la racine de mon site, que ce soit en local ou en distant,
j'utilise
dirname($_SERVER["SCRIPT_NAME"])

---
Leonick
http://bike-in-ventoux.champignytriathlon.org les photos et le récit de 1000 km
en vélo autour du Mont Ventoux

Avatar
Laforest
bruno modulix wrote:

Merci à tous.
Maintenant j'ai compris :

Leçon n°1 : Ne pas se servir de getcwd()

Je saute sur la leçon numéro 2

A bientôt pour de nouvelles aventures

Michel