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

EDI, CMS, Outils, Scripts et API PHP Discussion :

$_SERVER['DOCUMENT_ROOT'] sur Wamp [Wamp]


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 10
    Points : 9
    Points
    9
    Par défaut $_SERVER['DOCUMENT_ROOT'] sur Wamp
    Bonjour,

    Je travaille sur le portage d'une application faite en php, le problème de cette application est qu'elle contient des chemins absolus. Un script root.php contenant les chemins est appelé à chaque fois. Un petit extrait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $matrix['js']			="/www/docs/fcm/center/lib/js";
    Des chemins de la sorte sont utilisés dans les scripts de l'application. L'objectif est de rendre cette application portable afin de l'installer chez d'autres filiales. J'entreprend donc de remplacer tous les chemins absolus par des chemins relatifs (sachant que php n'est pas ma spécialité).

    J'utilise pour cela la variable d'environnement $_SERVER['DOCUMENT_ROOT']. A titre d'exemple, j'ai remplacé la ligne précédente par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $matrix['js']			=$_SERVER['DOCUMENT_ROOT']."/center/lib/js";
    Cela marche bien pour les include et les require qui sont bien résolus, seulement pour les éléments interprétable en html (img src, link, form action...), cela ne fonctionne pas.

    Voici le code php utilisé et le rendu html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="<? echo $matrix['sharedgfx']."/"?>logo.gif">
    Résultat html :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="C:/wamp/www/webapp/center/shared/gfx/img/aware.gif">
    (pour l'instant je test en local chez moi sur une plateforme wamp)

    L'image n’apparaît évidemment pas et c'est pareil pour les forms, les css...etc

    A noter que j'ai un vhost qui pointe sur la racine de mon application et qui est le point d'accès.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 23
    Points : 30
    Points
    30
    Par défaut
    Bonsoir, a t'as place j'aurais directement insérer le bon path.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $matrix['js']			= "/webapp/center/lib/js";
    Tu dois indiquer la racine de ton dossier ou d'un dossier dans 'www'.

    www -> /

    www/webapp/center -> /webapp/center


    si t'as d'autres question

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Bonjour, je te remercie pour ta réponse. J'ai tenté de faire cela, seulement les include et require ne sont pas résolus.

    On me dit :

    Warning: require_once(/webapp/PROD/CENTER/lib/php/gfx/top.php) [<a href='function.require-once'>function.require-once</a>]: failed to open stream: No such file or directory

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 23
    Points : 30
    Points
    30
    Par défaut
    Tu peux me dire le path du fichier qui t'envoi cette erreur ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    C'est "C:\wamp\www\webapp\PROD\CENTER\lib\php\fnc\r_login.php"

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 23
    Points : 30
    Points
    30
    Par défaut
    dans "C:\wamp\www\webapp\PROD\CENTER\lib\php\fnc\r_login.php"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once "../gfx/top.php";

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    J'y ai pensé, malheureusement la variable $matrix est utilisée dans plein d'autres scripts dans des emplacements différents. Voici l'architecture de l'application.

    On a un script root.php dans lequel sont définis des chemins :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $matrix['paramjs']		=$_SERVER['DOCUMENT_ROOT']."/PROD/PARAM_V4/lib/js";
    $matrix['chapeaulibfncext']	=$_SERVER['DOCUMENT_ROOT']."/PROD/chapeaucenter/lib/php/fnc";
    $matrix['chapeaulibfnc']	=$_SERVER['DOCUMENT_ROOT']."/PROD/chapeaucenter/lib/php/fnc";
    $matrix['chapeaujs']		=$_SERVER['DOCUMENT_ROOT']."/PROD/chapeaucenter/lib/js";
    Ce root est inclut dans pleins de scripts dans des répertoires différents. à la base, les chemins dans $matrix étaient des chemins absolus comme cité précédemment. Je les ai replacé par $_SERVER['DOCUMENT_ROOT'] ce qui permet aux include et require de résoudre les chemins et inclure les scripts nécessaires. Le problème se pose au niveau du rendu html :

    Quand j'ai quelque chose qui est de la forme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="c:/wamp/www/PROD/center/lib/gfx/img.jpg">
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="c:/wamp/www/PROD/center/lib/php/login.php">
    Mais au niveau de php, les :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include $matrix."/script.php";
    marchent très bien !

  8. #8
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Points : 409
    Points
    409
    Billets dans le blog
    1
    Par défaut
    Les éléments que tu inclues en php (via un include_once ou un require_once) vont nécessiter en chemin absolu le chemin sur le serveur (donc c:/... si tu es sous windows)
    Les éléments que tu inclues en html (les images / js / css) nécessitent un chemin à partir de la racine web (donc /css/main.css pour une css disponible sous c:/wamp/www/css/main.css par exemple).

    D'où le fait que les php fonctionnent sans problème, mais pas les JS/CSS
    A toi de jongler entre les deux donc et définir tes matrix en fonction !
    si ce post vous a été utile, si votre problème est résolu.
    Pensez-y !
    __________________________________
    Doc officielle PHP | FAQ PHP | Cours PHP

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    J'avoue que j'ai du mal, les développeurs de l'application utilisent interchangeablement la variable $matrix que ce soit pour des include ou des rendu html image, js...

    Cette variable est utilisée partout dans l'appli. Il me faudrait un moyen de retourner un chemin relatif qui puisse fonctionner en php mais aussi en html.

    La fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SERVER[Document_root]
    n'est peut-être pas le meilleur moyen, vous en connaissez d'autres ?

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

Discussions similaires

  1. $_server['document_root'] dans un lien
    Par nolmel dans le forum Langage
    Réponses: 6
    Dernier message: 17/01/2007, 01h29
  2. pb avec $_SERVER['DOCUMENT_ROOT'] pas reconnu
    Par trotters213 dans le forum Langage
    Réponses: 2
    Dernier message: 13/09/2006, 12h33
  3. [Système] Qustions sur $_SERVER['DOCUMENT_ROOT']
    Par pierrot10 dans le forum Langage
    Réponses: 6
    Dernier message: 21/08/2006, 22h47
  4. [Cookies] $_server['document_root']. ne fonctionne pas
    Par pierrot10 dans le forum Langage
    Réponses: 6
    Dernier message: 16/08/2006, 12h49
  5. Pb avec $_SERVER['DOCUMENT_ROOT']
    Par xtiand4 dans le forum Langage
    Réponses: 15
    Dernier message: 10/07/2006, 16h24

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