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 :

Chemin absolu fonctionnant sur n'importe quel hébergeur


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 61
    Par défaut Chemin absolu fonctionnant sur n'importe quel hébergeur
    Bonjour à tous et meilleurs voeux,

    Je réalise une application en-ligne pouvant être installé sur n'importe quel hébergeur or le chemin de la racine du site diffère selon les hébergeurs.

    Je m'explique :
    J'ai un hébergeur où la racine est simplement "/" et un autre où c'est "/home/mondomaine/public_html/forum"

    Donc si je met un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    include($_SERVER["DOCUMENT_ROOT"]."/common/menu.php");
    Sur l'un ça donnera :
    include(//common/menu.php);
    et sur l'autre
    include(/mondomaine/public_html/forum/common/menu.php);
    Pour le second pas de soucis, mais pour le premier cela va peut être poser problème vu qu'il y a "//" au lieu de "/".
    Apparemment "//" fonctionne sur l'hébergeur où j'ai testé, mais est ce que ce sera le cas sur un autre hébergeur où la racine est "/" ?

    Ou avez-vous une autre solution plus efficace pour bien gérer les chemins absolus ?

    En vous remerciant par avance.

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Il existe des fonctions pour répondre à cette problématique; dirname et realpath.

    E.G.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $current_dir = dirname(__FILE__);
    $parent_dir = dirname(dirname(__FILE__));

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 61
    Par défaut
    Merci pour ta réponse.

    Mais j'avais déjà essayé avec ces fonctions, je ne les utilise peut être pas bien ... ?

    Pour être plus clair voici un exemple :
    J'ai un fichier connect.php dans le répertoire common/
    dans ce fichier connect.php j'ai un "include" d'un fichier présent à la racine.
    Le fichier connect.php peut être "include" dans un fichier présent à la racine ou dans un fichier situé dans un répertoire voir sous-répertoire ...

  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Je n'aime pas bien l'idée de composer une page web à grand coups d'includes, c'est un coup à se casser la tête pour rien.

    Ce que tu peux faire en revanche c'est manipuler l'include path pour inclure un fichier depuis n'importe quel script, peu importe sa position dans la hiérarchie.

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 421
    Par défaut
    Si tu veux garder ton $_SERVER["DOCUMENT_ROOT"] tu peux simplement tester si le dernier caractère retourné par cette variable est un '/'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $adresse_racine = (substr($_SERVER['DOCUMENT_ROOT'],-1) == '/')? $_SERVER['DOCUMENT_ROOT'] : $_SERVER['DOCUMENT_ROOT'].'/' ;
    include($adresse_racine."common/menu.php");

  6. #6
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Citation Envoyé par ABCIWEB Voir le message
    Si tu veux garder ton $_SERVER["DOCUMENT_ROOT"] tu peux simplement tester si le dernier caractère retourné par cette variable est un '/'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $adresse_racine = (substr($_SERVER['DOCUMENT_ROOT'],-1) == '/')? $_SERVER['DOCUMENT_ROOT'] : $_SERVER['DOCUMENT_ROOT'].'/' ;
    include($adresse_racine."common/menu.php");
    Ou plus simplement utiliser realpath qui enlèvera toujours le dernier / (ou encore utiliser trim)

    Concrêtement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (!defined('DOCUMENT_ROOT'))
      define('DOCUMENT_ROOT', realpath($_SERVER['DOCUMENT_ROOT']));
     
    include DOCUMENT_ROOT . '/libraries/core/test.class.php';

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

Discussions similaires

  1. Html et Css pour système réutilisable sur n'importe quel site
    Par dimalta5 dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 25/02/2008, 12h21
  2. Réponses: 12
    Dernier message: 28/09/2007, 14h01
  3. Script JSP qui ne fonctionne pas sur n'importe quel poste
    Par vannary dans le forum Servlets/JSP
    Réponses: 15
    Dernier message: 18/12/2006, 11h56

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