images non affichees (probleme chemin relatif)

Petit nouveau ! | 5 Messages

02 août 2005, 23:37

Bonjour,

Je suis un petit nouveau en PHP, et je rencontre un probleme d'affichage d'images.

Le contexte :

mon_site/script/test.php
mon_site/html/ma_page.html
mon_site/html/images/mon_image.jpg

Depuis test.php, je recupere le contenu de ma_page.html avec la methode :
$page = file_get_contents("../html/ma_page.html");
Ensuite, je fais :
echo $page;
Mon probleme est que l'image mon_image.jpg contenue dans la page html ne s'affiche pas (les chemins relatifs sont par rapport à la page et non par rapport au script php).

J'ai essayé la commande chdir, mais pas de réussite.

Y a t'il quelque chose a faire (surement) dans le script pour le faire "s'executer" dans un autre répertoire?

Peut t'on configurer le serveur Apache pour qu'il connaisse les chemins des images (sorte de incl_path), et est-ce une bonne solution ?

D'avance merci pour votre aide ...
Modifié en dernier par steph_o le 03 août 2005, 00:38, modifié 1 fois.

Mammouth du PHP | 19672 Messages

02 août 2005, 23:54

Fais-toi un fichier de configuration avec un include_path sans bidouiller dans Apache et mets tes chemins relatifs avec une variable récupérée dans ton fichier de config de façon à ce que le chemin corresponde au bon chemin depuis l'adresse affichée, donc depuis ton fichier script et non depuis la page html.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 5 Messages

03 août 2005, 00:19

Excuses moi Cyrano, mais je comprends pas tout à la démarche (je suis vraiment nouveau).
En fait, je ne peux pas changer la page HTML (mettons que ce soit celle d'un client).

Peux tu être plus précis ... Je suis sûr que c'est pas grand chose, mais je cale ...

Merci

Mammouth du PHP | 19672 Messages

03 août 2005, 10:42

En fait, je ne peux pas changer la page HTML ...
Là tu as un problème... COmment arrives-tu à y faire exécuter un script quelconque si tu ne peux rien changer dedans ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 5 Messages

03 août 2005, 16:26

Excuses moi, je suis pas très clair (:?).

Une fois que j'ai récupéré le contenu de la page HTML dans le script (avec la méthode get_file_contents), je peux le modifier pour l'affichage.

Je pense m'orienter vers une modification des chemins relatifs qui sont dans la page pour les rendre relatif à l'emplacemnet du script. Mais, ça me parait un peu trop spécifique (comment trouver tous les chemins dans ma page HTML sans en oublier un seul ?).
C'est pourquoi, je voulais savoir si une méthode plus générale existait déjà.

Donc je suis intéressé par ce que tu as évoqué avec un fichier d'include_path. Peux tu me repéciser (peut être un exemple) comment procéder?

Merci d'avance

Mammouth du PHP | 19672 Messages

03 août 2005, 16:31

L'include_path dont je parle est une partie du chemin. Maintenant pour récuprer toutes les url dans le fichier, utilise les expressions régulières. Une petite recherche dans le forum va te donner pas mal de réponses.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 5 Messages

04 août 2005, 23:16

Salut,

Je pense que j'ai trouvé la solution à mon problème.

Il s'agit de placer dans le header de la page html la balise BASE comme suit :

Code : Tout sélectionner

<BASE href="http://localhost/mon_site/html/">
Cette balise permet de définir l'URI de base du document. Ca marche très bien pour mon cas.
(dans la doc HTML, il est préciser que cette balise doit être placée avant toute balise qui utilise un lien relatif).

Donc, le chemin relatif de l'image dans ma page :

Code : Tout sélectionner

./images/mon_image.jpg
sera complété et interprété comme suit :

Code : Tout sélectionner

http://localhost/mon_site/html/./images/mon_image.jpg
Donc, Cyrano, je ne vais pas utiliser les expressions régulières pour ce cas là. Une autre fois surement.

Merci encore

(je ne passe pas encore le sujet en résolu. Si tu as une suggestion supplémentaire, n'hésites pas)

Mammouth du PHP | 19672 Messages

04 août 2005, 23:24

Effectivement, c'est une solution à laquelle je n'avais pas songé, si ça fonctionne, c'est parfait. Vérifie quand même avec différents navigateurs, mais ça devrais marcher très bien.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 5 Messages

04 août 2005, 23:37

Je confirme que ça fonctionne pour Firefox et IE et Safari.

A plus