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 url absolue ?


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut include et url absolue ?
    Bonjour à tous

    Un truc est en train de me rendre fou depuis des heures...

    est-il impossible d'utiliser une url absolue dans un include ?

    Ou est-ce ma façon de faire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    include('/test/menu/class/gabarit/gabarit.class.php');
    une erreur est levée :

    Warning: include(/test/menu/class/gabarit/gabarit.class.php) [function.include]: failed to open stream: No such file or directory in /home/www/f0c92a4fb16db0bfbfa6be2788dd32/web/test/menu/maPage.php on line 10

    Alors que l'url depuis la racine du site est exacte...

    Quelle est l'erreur ???

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 893
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 893
    Points : 16 346
    Points
    16 346
    Par défaut
    C'est possible.

    C'est juste le chemin qui est erroné, contrairement à ce que tu laisses supposer. PHP ne trouve donc pas le fichier en question (No such file).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    oui j'ai bien compris le message d'erreur mais j'ai vérifié 10 fois (100 ???)

    à la racine de mon site il y à le repertoire "test" qui contient le repertoire "menu" qui contient "class" qui contient "gabarit" qui contient "gabarit.class.php"

    c'est bien pourquoi je n'y comprend rien ...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    d'autant que si j'essaye de l'appeler dans le navigateur :

    http://www.monSite.com/test/menu/cla...arit.class.php

    il n'y à pas de problème.

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 243
    Points
    20 243
    Par défaut
    Le chemin que tu veux donner n'est pas absolue mais relatif. Le chemin absolue est celui donner dans le message d'erruer :

    /home/www/f0c92a4fb16db0bfbfa6be2788dd32/web/test/menu/maPage.php
    Dans ton cas enlève le / de début pour avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test/menu/class/gabarit/gabarit.class.php
    Ca va sans doute régler ton problème

  6. #6
    Membre régulier Avatar de Grepsd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 96
    Points : 119
    Points
    119
    Par défaut
    C'est par ce que PHP prend pour URL absolue l'url absolue du serveur et non de ton répertoire, du coup, le bon chemin est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $path = '/home/www/f0c92a4fb16db0bfbfa6be2788dd32/web/test/menu/class/gabarit/gabarit.class.php';
    Et voici le véritable chemin absolu de ton fichier.

    [edit] Grunk, non car si tu retire le premier '/', le chemin sera relatif au chemin du script appelé en premier, et si ce script n'est pas à la racine de son site, nous aurons le même problème.[/edit]

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    la barre oblique seule en début d'url ne se refere-t-elle pas à la racine du site ?

  8. #8
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 893
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 893
    Points : 16 346
    Points
    16 346
    Par défaut
    Ne confonds pas chemin HTTP et chemin UNIX. L'inclusion de fichier en PHP se fait par rapport au chemin UNIX, alors que la racine d'un site comme tu l'appelles fait référence au chemin HTTP.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    lorsque j'appelle une image de n'importe ou sur mon site en faisant

    /images/monImage.png

    elle s'ouvre...

  10. #10
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 243
    Points
    20 243
    Par défaut
    Grunk, non car si tu retire le premier '/', le chemin sera relatif au chemin du script appelé en premier, et si ce script n'est pas à la racine de son site, nous aurons le même problème.
    Oui en effet j'ai supposé (un peu vite ^^ ) que son script était à la racine :p

    la barre oblique seule en début d'url ne se refere-t-elle pas à la racine du site ?
    pas sous unix a mon avis puisque la / représente la racine du système de fichier

    lorsque j'appelle une image de n'importe ou sur mon site en faisant

    /images/monImage.png

    elle s'ouvre...
    Une image fait référence au chemin http et non système (ouvert par le navigateur)

  11. #11
    Membre régulier Avatar de Grepsd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 96
    Points : 119
    Points
    119
    Par défaut
    Non, elle stipule qu'il est question de chemin absolu, étant donné que ton hébergeur n'a pas configuré PHP pour que le chemin absolu pour les scripts exécutes dans ton répertoire, la racine était la racine de ton répertoire, tu utilise le chemin absolu du système de fichier de la machine hôte(du serveur).

    Et donc tu te retrouve dans l'arborescence du système UNIX dans ton cas.


    [edit]Effectivement l'utilisation de variable $_SERVER['DOCUMENT_ROOT'] permet une solution dynamique... bien joué.[/edit]

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    ok,

    cela semble fonctionner avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    include($_SERVER["DOCUMENT_ROOT"].'/test/menu/class/gabarit/gabarit.class.php');

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    Merci à tous pour votre aide

    Je mets le tag resolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème URL absolue avec <html:base>
    Par sab38 dans le forum Struts 1
    Réponses: 5
    Dernier message: 06/02/2008, 16h35
  2. file_exists et url absolue
    Par renaud26 dans le forum Langage
    Réponses: 1
    Dernier message: 19/01/2008, 17h08
  3. url absolue / relative
    Par enzo21 dans le forum Flash
    Réponses: 9
    Dernier message: 30/08/2006, 18h23
  4. XHR et url absolue ?
    Par XecTech dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/08/2006, 19h33
  5. [Servlets] Redirection HTTP vers une url absolue
    Par Dinaïz dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 18/11/2005, 21h56

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