IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Include et liens absolus


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Include et liens absolus
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php include ("/inc_images.php") ?>
    (marche)
    2. Dans mes pages : mapage_i.html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  2. #2
    Membre éclairé
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Points : 654
    Points
    654
    Par défaut
    fais un fichier config.inc.php avec par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
     
    define('DS', DIRECTORY_SEPARATOR);
     
    define('ROOT_DIR', 'mon/root/dir');
    define('IMAGES_DIR', ROOT_DIR.DS.'mes/images');
    // etc...
     
    // EOF
    il vaut mieux avoir tous les chemins absolus ainsi.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse,

    Je viens d'essayer "definie" à l'instant mais ça ne marche pas mieux.
    Define me permet de définir des constantes et donc au lieu d'avoir :

    j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    define('DIR','/photos')
    Mais le problème est toujours là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Ce n'est pas ma définition du chemin absolu qui est mauvaise, c'est que PHP ne les gère pas...

    D'autres idées ?

    Merci

  4. #4
    Membre éclairé
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Points : 687
    Points
    687
    Par défaut
    Salut,

    par chemin absolu on entend la racine de ton site (là où se situe ton fichier index.php), et cela dépend du serveur que tu utilises. Tu peux le trouver en effectuant un phpinfo() et en regardant le "document_root".

    C'est souvent sous la forme :
    - user3025/www
    - home/userx/web/htdocs
    Ou en local :
    - C:/easyphp/www/monsite

    Comme bricecol je te conseille de créer une constante avec ce chemin. Tu pourra ensuite l'utiliser dans tes scripts :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    define('ROOT','home/userx/web/htdocs');
    define('ROOT_PHOTO',ROOT.'/photo');
    A++

Discussions similaires

  1. convertir liens relatifs en liens absolus
    Par marechh dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 21/04/2009, 17h51
  2. MVC, liens absolus, relatifs
    Par Sylvain__A_ dans le forum Langage
    Réponses: 5
    Dernier message: 13/11/2008, 11h45
  3. [CKEditor] Liens absolus pour les images
    Par jeronicoz dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 09/11/2007, 20h35
  4. [Wamp] configuration php : probleme avec les liens absolus
    Par chico_du_33 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 17/05/2007, 14h03
  5. Réponses: 4
    Dernier message: 01/04/2007, 13h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo