Bonjour,
Le sujet a longuement été évoqué et j'ai trouvé de nombreux forums où il était abordé, sans toutefois trouver de réponses précises. Je relance donc le sujet en espérant y trouver une réponse
Voici l'arborescence de mon site :
www/monsite/script.php
www/monsite/config.xml
www/monsite/index.php
www/monsite/photos
www/monsite/rubrique_i/mapage_i.html
Le but de mon script.php est de parser le dossier photos afin d'y trouver toutes les images et de modifier en conséquence le fichier config.xml et de renvoyer un echo de tous les liens des images dans la page appelant le script.
Pour appeler le script j'utilise un include :
1. Dans ma page index.php :
<?php include ("/inc_images.php") ?>
(marche)
2. Dans mes pages : mapage_i.html :
<?php include ("../inc_images.php") ?>
(marche)
1er problème
Je suis obligé de laisser l'include en relatif à partir des pages mapage_i. Si je le passe en absolu, c'est-à-dire : <?php include ("/inc_images.php") ?> j'obtiens l'erreur :
1 2 3
| Warning: include(/inc_images.php) [function.include]: failed to open stream: No such file or directory in C:\Program Files\wamp\www\contacts\contacts.php on line 63
Warning: include() [function.include]: Failed opening '/inc_images.php' for inclusion (include_path='.;C:\php5\pear') in C:\Program Files\wamp\www\contacts\contacts.php on line 63 |
2ème problème
Si je met mes liens en relatifs dans mes pages, un soucis demeure pour mon script.php. Je pensais que les chemins définies dans le script étaient relatifs à la position du script. Or il s'avère que ces liens sont relatifs à la position de la page appelant le script.
Ce script étant appelé par des pages n'étant pas au même niveau de l'arborescence, il faut que les chemins soient absolus.
Voici le début de mon code :
1 2 3 4
| <?php
//chemin du dossier où sont stockées les photos
$dir = "photos"; |
Ci c'est index.php qui appelle le script, le répertoire "photos" est trouvé. Si c'est mapage_i.php qui l'appelle, l'erreur suivante apparait :
Warning: opendir(photos) [function.opendir]: failed to open dir: No such file or directory in C:\Program Files\wamp\www\inc_images.php on line 17
Je modifie donc le chemin du répertoire en chemin absolu :
1 2 3 4
| <?php
//chemin du dossier où sont stockées les photos
$dir = "/photos"; |
Et là, j'ai cette erreur, quelque soit la page qui lance l'include :
Warning: opendir(/photos) [function.opendir]: failed to open dir: No such file or directory in C:\Program Files\wamp\www\inc_images.php on line 17
J'ai essayé la solution avec les variables serveur :
1 2 3 4
| <?php
//chemin du dossier où sont stockées les photos
$dir = $_SERVER["DOCUMENT_ROOT"]."photos"; |
Cette solution marche pour toutes les pages includant le script mais les images n'apparaissent plus...
Question ?
Existe-t-il une solution pour faire un include d'un script en absolu, ou d'utiliser des chemins absolus dans les scripts PHP ? (de la forme /repertoire/) sinon comment s'en sortir ?
A savoir que je travaille uniquement en local pour l'instant, avec wampserver (option allow url include on)
Merci beaucoup pour votre aide !
Partager