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 :

chemins absolu et relatif


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut chemins absolu et relatif
    Bonjour.
    J'ai un petit soucis avec mon chemin absolu. J'ai un serveur local. Je pensais que le chemin absolu d'un fichier était :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    localhost/repertoires/monfichier.php
    et que donc, je pouvais écrire dans n'importe quel fichier de mon projet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	<?php require_once 'localhost/repertoires/monfichier.php';?>
    sans avoir ce tyoe d'erreur :
    Warning: require_once(]localhost/repertoires/monfichier.php): failed to open stream: Invalid argument in E:\EasyPHP-DevServer-13.1VC9\EasyPHP-DevServer-13.1VC9\data\localweb\Projet\index.php on line 13

    Fatal error: require_once(): Failed opening required ]localhost/repertoires/monfichier.php' (include_path='.;C:\php\pear') in E:\EasyPHP-DevServer-13.1VC9\EasyPHP-DevServer-13.1VC9\data\localweb\Projet\index.php on line 13
    La ligne 13 étant celle du require_once.

    Merci de votre aide.

  2. #2
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    "/localhost" n'est pas pareil que "localhost"

    "/localhost" c'est la racine du serveur PUIS localhost (chemin absolu)

    "localhost" sous-entend "./localhost", c'est à dire, est-ce qu'à partir du point où je me trouve, il y a un répertoire localhost (chemin relatif)
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    require_once recherche un chemin (qu'il soit local ou non) sur le serveur, donc dans ta syntaxe, ce chemin est manifestement faux et le fichier ne peut être trouvé.
    Si tu veux récupérer un fichier depuis son URL (ce qui est assez maladroit sur le serveur), il faut déjà s'assurer que allow_url_include soit activé dans ton php.ini et indiquer qu'il s'agit d'une URL en précisant le protocole
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php require_once 'http://localhost/repertoires/monfichier.php';?>
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    pour l'inclusion de fichier, voir les constantes magiques :
    • __DIR__
    • dirname(__DIR__)
    • ...

    Contrairement au chemin relatif "classique" entre le fichier "final*" et le fichier inclus, ici il s'agit du chemin relatif entre le fichier INCLUANT et le fichier INCLUS.

    Intérêt : ce chemin relatif entre le fichier INCLUANT et le fichier INCLUS ne change pas, même si le fichier "incluant" est lui-même inclus dans un autre !

    * le fichier "final" peut très bien inclure le fichier "incluant". Auquel cas ces 2 chemins "relatifs" ne sont pas le mêmes !

  5. #5
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Merci à tous.
    J'aimerai mieux comprendre vos intéressantes remarques et suggestions :

    @dendrite : avec ce chemin : /localhost/Projet/Vue/Accueil/header.php je dois pouvoir accéder au fichier header.php où que je me trouve sur le serveur local ?

    @jreaux62 : j'aimerai bien employer ce qui est prévu par php pour les constantes, mais malgré le lien que tu m'as donné, je ne sais pas comment traduire mon chemin ni avec quelles constantes le récupérer.

    @Bovino : s'il est déconseillé de récupérer un fichier depuis son URL, je ne le ferai pas. Je fais du procédural et je n'ai pas créé de fichier php.ini, est il déjà dans les fichiers de config de mon serveur local (easyphp) ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    1/ soit l'arborescence :
    • (racine) -> "rep1" -> "ssrep11" -> fichier1_incluant.php
    • (racine) -> "rep2" -> fichier2_inclus.php

    Dans fichier1_incluant.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    include( dirname(dirname(__DIR__)).'/rep2/fichier2_inclus.php' );
    • __DIR__ est le dossier du fichier incluant (fichier1_incluant.php), donc "ssrep11"
    • dirname(__DIR__) est son parent, donc "rep1"
    • dirname(dirname(__DIR__)) est donc la (racine)
    • on remonte ensuite dans "rep2"

    Même si "fichier1_incluant.php" est lui-même inclus dans un autre fichier, à n'importe quel endroit de l'arborescence, ce chemin ne change pas.

    2/ Pour tous les autres types de liens (img, link,...) je crée avant tout des constantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    // -----------------------------------------------------------
    // CONFIGURATION : 
    // -----------------------------------------------------------
    if(!defined('SITE_URL_WWW')) 		define('SITE_URL_WWW',		'www.mon-site-amoi.com'); // en Production
    //if(!defined('SITE_URL_WWW')) 		define('SITE_URL_WWW',		'localhost/www-repertoire-local-de-mon-site-a-moi'); // en TEST LOCAL
    if( !defined('SITE_URL_HTTP')) 		define('SITE_URL_HTTP',		'http://'.SITE_URL_WWW.'/');
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	<link type="text/css" rel="stylesheet" href="<?php echo SITE_URL_HTTP; ?>css/style.css" media="all" />
     
    	<img src="<?php echo SITE_URL_HTTP; ?>images/mon-image.jpg" alt="" />
    Dernière modification par Invité ; 06/05/2015 à 09h06.

  7. #7
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Bonsoir et merci de ton aide.
    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    require_once (dirname(dirname(__DIR__)).'/Projet/Accueil/footer.php' );
    ?>
    et j'ai :
    Warning: require_once(E:\EasyPHP-DevServer-13.1VC9\EasyPHP-DevServer-13.1VC9\data\localweb/Projet/Accueil/footer.php): failed to open stream: No such file or directory in E:\EasyPHP-DevServer-13.1VC9\EasyPHP-DevServer-13.1VC9\data\localweb\Projet\Vue\gabarit.php on line 3

    Fatal error: require_once(): Failed opening required 'E:\EasyPHP-DevServer-13.1VC9\EasyPHP-DevServer-13.1VC9\data\localweb/Projet/Accueil/footer.php' (include_path='.;C:\php\pear') in E:\EasyPHP-DevServer-13.1VC9\EasyPHP-DevServer-13.1VC9\data\localweb\Projet\Vue\gabarit.php on line 3
    sachant que Projet est sous la racine.
    J'ai du mal à comprendre mes erreurs.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    apparement tu te trouve ici avec ton require once

    "E:\EasyPHP-DevServer-13.1VC9\EasyPHP-DevServer-13.1VC9\data\localweb\Projet\Vue\gabarit.php "

    pourquoi ne pas faire un

    require_once ('../Accueil/footer.php');

  9. #9
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Bonjour.
    Je ne fais pas require_once ('../Accueil/footer.php'); pour utiliser les constantes.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Oui pardon j'avais mal lu...
    essaye un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump(dirname(__FILE__));
    ou
    c'est pareil
    et travail a partir de là.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once(dirname(__FILE__) . '/mon-fichier.php');

  11. #11
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Merci à tous.
    J'ai un peu avancé. Mes liens fonctionnent.
    Je ne comprends pourquoi le chemin /Projet/Vue/Accueil/header.php n'est pas toujours reconnu alors que Projet est sous la racine mais à part ça c'est bon.
    A bientôt.

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

Discussions similaires

  1. Découper un chemin absolu ou relatif
    Par abysr dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 08/05/2015, 14h53
  2. Chemin absolu ou relatif ?
    Par FrontLine dans le forum Langage
    Réponses: 8
    Dernier message: 09/06/2008, 21h09
  3. Problème de chemin absolu et relatif
    Par nabolo dans le forum BIRT
    Réponses: 0
    Dernier message: 07/11/2007, 17h34
  4. Réponses: 1
    Dernier message: 28/09/2006, 13h09
  5. chemin relatif vs chemin absolu
    Par maxos75 dans le forum ASP
    Réponses: 7
    Dernier message: 29/03/2006, 16h47

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