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 :

Gros problème d'include


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Avatar de yorukaze
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 285
    Par défaut Gros problème d'include
    Hello tous,

    je suis deja venu avant hier pour le meme soucis que j'ai cru avoir résolu mais nan ...
    Globalemnt j'ai un fichier bootstrap.php qui contient des define() d'url.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    define('DS', DIRECTORY_SEPARATOR);
    define('ROOT', $_SERVER['DOCUMENT_ROOT']);
    define('ADMIN', ROOT.'admin/');
    define('MEDIA', ROOT.'media/');
    define('INC', ROOT.'includes/');
    ?>
    Bon jusque la tout va bien, sur mon index.php je peux appeler mes fichers et mes classes.
    Le probleme se pose lorsque je ne suis plus à la racine. Par exemple, si je vais dans le repertoire admin, impossible d'acceder aux autre repertoire, j'ai une adresse du style http://localhost/home/seb/www/admin/index.php donc forcemment ca ne risque pas de marcher.


    Pour illustrer un peu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    |--index.php
    |--bootstrap.php
    |--includes
        |--database.php
    |--media
        |--style.css
    |--admin
        |--index.php

  2. #2
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    personnellement, pour palier à ce problème, j'écris toujours mes chemins par rapport à la racine, ainsi l'endroit où sont utilisés les define() importe peu

    Pour écrire un chemin à partir de la racine, il suffit de commencer par un / (slash)

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    define('ROOT', '/');
    define('MEDIA', ROOT.'media/');

  3. #3
    Membre éclairé
    Avatar de yorukaze
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 285
    Par défaut
    Citation Envoyé par darkstar123456 Voir le message
    personnellement, pour palier à ce problème, j'écris toujours mes chemins par rapport à la racine, ainsi l'endroit où sont utilisés les define() importe peu

    Pour écrire un chemin à partir de la racine, il suffit de commencer par un / (slash)

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    define('ROOT', '/');
    define('MEDIA', ROOT.'media/');
    MArche pas plus puisque du coup a mon index j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: require_once(/includes/database.php) [function.require-once]: failed to open stream: No such file or directory in /home/seb/www/index.php on line 2
    La solution serait de mettre ./ mais du coup si je passes dans le dossier admin ca me posera de gros soucis.

  4. #4
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    haha nan suis bête, voilà le prob, t'as oublié un /

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    define('ROOT', $_SERVER['DOCUMENT_ROOT']);
    // changer par
    define('ROOT', $_SERVER['DOCUMENT_ROOT'].'/');
    soit tu met le slash à cet endroit, soit tu le rajoutes pour les autres, du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    define('MEDIA', ROOT.'/media/files/');

  5. #5
    Membre éclairé
    Avatar de yorukaze
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 285
    Par défaut
    Citation Envoyé par darkstar123456 Voir le message
    haha nan suis bête, voilà le prob, t'as oublié un /

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    define('ROOT', $_SERVER['DOCUMENT_ROOT']);
    // changer par
    define('ROOT', $_SERVER['DOCUMENT_ROOT'].'/');
    soit tu met le slash à cet endroit, soit tu le rajoutes pour les autres, du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    define('MEDIA', ROOT.'/media/files/');
    haha bien tenté mais je l'ai fait avant, avec différents tests avec $_SERVER mais ca passe pas. Toujours pareil, a la racine ca va mais les include de l'admin ne passent pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Not Found
     
    The requested URL /home/seb/www//admin/index.php was not found on this server.
    Y'a un / de trop et meme sans ca ca passe pas :s

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Par défaut
    Une solution simple (même si ce n'est pas la meilleure) serait de définir la constante ROOT dans index.php (ou plutôt dans chaque page appelable. Si je me trompe pas, les chemins sont résolus par rapport à la page courante.

    soit, dans la racine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    define( 'ROOT' , './' ); // ou define( 'ROOT' , '' );
    et dans admin/index.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    define( 'ROOT' , '../' );

  7. #7
    Membre éclairé
    Avatar de yorukaze
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 285
    Par défaut
    Citation Envoyé par Petibidon Voir le message
    Une solution simple (même si ce n'est pas la meilleure) serait de définir la constante ROOT dans index.php (ou plutôt dans chaque page appelable. Si je me trompe pas, les chemins sont résolus par rapport à la page courante.

    soit, dans la racine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    define( 'ROOT' , './' ); // ou define( 'ROOT' , '' );
    et dans admin/index.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    define( 'ROOT' , '../' );
    Pas bete. J'avais pas pensé a faire un define() pour le root dans chaque niveau

  8. #8
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Citation Envoyé par Petibidon Voir le message
    Une solution simple (même si ce n'est pas la meilleure) serait de définir la constante ROOT dans index.php (ou plutôt dans chaque page appelable. Si je me trompe pas, les chemins sont résolus par rapport à la page courante.

    soit, dans la racine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    define( 'ROOT' , './' ); // ou define( 'ROOT' , '' );
    et dans admin/index.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    define( 'ROOT' , '../' );
    Effectivement j'avais mal compris le problème et pour mes sites je fais exactement pareil ^^

    PS : désolé pour le retard j'étais en pause clope

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

Discussions similaires

  1. gros problème id
    Par Sékiltoyai dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/12/2004, 12h53
  2. Gros problème avec la facturation de Tiscali
    Par Harry dans le forum Dépannage et Assistance
    Réponses: 5
    Dernier message: 21/10/2004, 19h55
  3. Gros problème de session/cookies
    Par valfredr dans le forum XMLRAD
    Réponses: 18
    Dernier message: 03/06/2004, 10h21
  4. Problème d'include sous Dev-c++ 4.9.8.0
    Par Argonz dans le forum Dev-C++
    Réponses: 16
    Dernier message: 20/11/2003, 18h36
  5. Gros Problème avec DirectShow et la méthode RELEASE
    Par Olivier Delmotte dans le forum DirectX
    Réponses: 3
    Dernier message: 10/03/2003, 19h10

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