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 vers un fichier à inclure


Sujet :

Langage PHP

  1. #1
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut Chemin vers un fichier à inclure
    Bonjour,

    C'est pourtant tout con mais je n'arrive pas à inclure un fichier PHP.

    Soit un fichier situé dans ma_racine.com/includes/mon_fichier.php.
    Je dois, dans mon_fichier.php, inclure (ou require) un_autre_fichier.php du même répertoire que mon_fichier.php.

    J'ai beau essayer dans tous les sens, j'obtiens une page blanche avec require alors que j'ai commenté tout le code du fichier à inclure.

    Je suis allé jeter un oeil à la FAQ, j'ai essayé d'utiliser $_SERVER['DOCUMENT_ROOT'] mais pas mieux.

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    ola , je copy cole mon index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
     
    <?php
     
    ini_set("session.use_trans_sid","0");
    ini_set('arg_separator.output', '&amp;');
    ini_set("url_rewriter.tags","a=href,area=href,frame=src,iframe=src,input=src");
    session_cache_limiter('nocache');
    $cache_limiter = session_cache_limiter();
    $previous_name=session_name();
    session_start();
     
     
     
    define ('HOST_ADR' , "www.monsite.fr" );
    if ( isset( $_SERVER['HTTP_X_FORWARDED_HOST']) && $_SERVER['HTTP_X_FORWARDED_HOST']!=HOST_ADR){
    //exit;
    }
    if ( isset( $_SERVER['HTTP_X_FORWARDED_HOST'])) {   
    define ('HOST_PATH' , "/");   
    }
    else{
    define ('HOST_PATH' ,str_replace ('index.php' , '' , $_SERVER['SCRIPT_NAME'] ) );   
    }
     
    define ('HOST_DIR' , dirname(__FILE__).'/' );
    define ('CONFIG_PATH_FILE_INC' , HOST_DIR.'protected/config.inc');
    define ('CONFIG_PATH_FILE_PHP' , HOST_DIR.'protected/config.php');
    define ('AJAX_PATH' , HOST_DIR.'ajax');
    define ('AJAX_MOD' , 1);
    define ('AJAX_FILE_CONTROLER' , 'controller.php' );
    define ('AJAX_POST_NAME' , 'AJAX' );
     
    $url = isset($_SERVER['QUERY_STRING']) && $_SERVER['QUERY_STRING']!="" ? $_SERVER['QUERY_STRING'] :"";
    $url = isset($_SERVER['REQUEST_URI']) && $_SERVER['REQUEST_URI']!="" && $url== "" ? $_SERVER['REQUEST_URI'] : $url;
     
    if ( HOST_PATH!='/') {
    define ('DISPACHER_URL_PATH' , str_replace(HOST_PATH , "" ,$url));
    }
    else{
    define ('DISPACHER_URL_PATH' , $url) ;
    }
     
    define ('JUSC_INSTALATION' , 1);
    define ('ADMIN_SUFIX' , 'admin_');
    define ('CLIENT_SUFIX' , 'client_');
    define ('SHOW_MESSAGE_ERREUR' , true);
     
     
    define('CLASS_DIR',HOST_DIR.'library/JUSC/');
     
     
    require_once HOST_DIR.'library/JUSC/JUSC.php';
    require_once HOST_DIR.'library/JUSC/Exception.php'; 
     
    $jusc = new JUSC();
     
    	function __autoload($class_name) {
    		try{
    		require_once CLASS_DIR.$class_name.'/'.$class_name.'.php';
    		}
    		catch (Exception $e) {
    		JUSC_Exception::message('Message erreur  : '.$e);			 	   
    		}	
    	}
     
     
     
     
    $jusc->tablesuffix='pjr_';
    //Ceation de l'objet global au site
     
     
     
    $jusc->call('dispatcher',DISPACHER_URL_PATH);
     
    require_once HOST_DIR.'library/JUSC/ajax/post.php';
    //Execute AJAX
     
    $db = new model;
    $db->connecting_bdd($jusc);
     
     
     
     
    if ( isset($jusc->dispatcher['url'][0]) &&  $jusc->dispatcher['url'][0] == 'backEnd'){
    $jusc->session_name ='admin_';
     
    }
    else{
    $jusc->session_name ='user_';	
    }
     
     
    JUSC_ajax::post($jusc);
     
     
     
    $user = new JUSC_client;
    $user->checkIdentify($jusc);
     
     define("TEMPLATE_PATH_FILE",HOST_DIR.'frontEnd/theme1/');
    define("TEMPLATE_PATH",HOST_PATH.'frontEnd/theme1/');
     
     
    require_once TEMPLATE_PATH_FILE.'gabary/client/client.php';
     
     
     
     
    try{
    $jusc->JUSC_Intest($jusc->bsf('is_file' , TEMPLATE_PATH_FILE.'template.php') , 'is_file' );
    include  TEMPLATE_PATH_FILE.'template.php';
    } catch (Exception $e) {
    JUSC_Exception::message('Message erreur  : '.$e);		
    }
     
     
    ?>

    pas possible de po trouver son chemin a partir de www avec un truc comme ca:

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Normalement, si les deux fichiers sont dans le même répertoire, un bête chemin relatif devrait fonctionner : include('./fichier_a_inclure.php');

  4. #4
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    Celira+1, le ./ est facultatif.

    je dirai que le plus sage n'est jamais sage de se baser sur $_SERVER['DOCUMENT_ROOT'] qui change en fonction de la page appelée, mais sur __DIR__ qui est le chemin du fragment de script en cours d'execution, ce qui est beaucoup plus simple.

  5. #5
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Je dois, dans mon_fichier.php, inclure (ou require) un_autre_fichier.php du même répertoire que mon_fichier.php.
    Bonjour

    Le plus simplement du monde, il me semble.

    Exemple :
    page1.php se trouve dans le répertoire "bidule/"

    Si dans cette page 1, se trouve un include d'un fichier, qui lui-même se trouve dans le même répertoire, tout simplement dans la page 1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    include ('page2.php');
    ?>

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Non vraiment, quand ça veut pas, ça veut pas !

    Sans le require :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       		$vote_du_joueur = $row['vote_du_joueur'];
        		$id_message = $row['id_message'];
        		$nb_votes = $row['nb_votes'];
        		$type = 'msg';
        		//require 'inc_who_like.php';
    => La page s'affiche.

    Avec le require, sous quelque forme que ce soit, page blanche.

    Sachant que :
    - inc_who_like.php est dans le même répertoire "includes" que le code montré ci-dessus ;
    - que j'ai vidé tout le code dans le fichier inc_who_like.php ;
    - que j'ai essayé avec ou sans parenthèses, guillemets...
    - que j'ai essayé ces différentes formes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    require __DIR__.'inc_who_like.php';
    require $_SERVER['DOCUMENT_ROOT'].'inc_who_like.php'
     
    // Avec des variables définies dnas le premier contrôleur appelé par l'url
    require $base.'inc_who_like.php';
    require $racine.'inc_who_like.php';

  7. #7
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Intriguant, et pourtant mon exemple est fonctionnel, y a pas de doute.

    Ce qui m'intrigue aussi, est que tu dis qu'une page blanche s'affiche, donc le chemin est OK !

    Sinon, tu aurais un joli message du genre "No such file or directory.... "

    Par conséquent, ton fichier 'inc_who_like.php' est bien trouvé, mais il n'y a rien dessus à afficher ?

  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Ben pour le moment je l'ai vidé pour éviter toute erreur mais il y a du code après le require qui génère la page.
    Ce require est un sous-programme qui définit le contenu d'une variable utilisée dans la page web.
    Mais si je donne un contenu simple à cette variable du genre $who_like = 'toto'; dans le fichier inc_who_like.php ça m'affiche une page blanche quand même alors que sans le require la page s'affiche, c'est à dire sans valeur pour la variable.

    Je continuerais de chercher et de tester ce soir.

    Merci de votre aide; si vous avez d'autres idées, je suis preneur.

  9. #9
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    Citation Envoyé par CinePhil
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require __DIR__.'inc_who_like.php';
    c'est bizare chez moi __DIR__ n'a pas le '/' final.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require __DIR__.'/inc_who_like.php';
    M'est avis que tu n'as pas activé correctement le "error_reporting". et si tu ne les affiches pas sur la page elle-même, tu peux les diriger vers fichier de log.

    tu peux regarder là et faire le contraire: http://php.developpez.com/faq/langag..._cachererreurs il manque le display_startup_errors à cette réponse.

  10. #10
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    En fait il existe deux cas où ton error_reporting est correctement activé et une erreur/warning/notif n'affiche rien malgré son déclenchement mais que la page reste blanche: le log contiendra cependant bien les avertissements: il y a un ob_start() qui collecte tous les affichages, dont les messages d'erreurs.

    Le deuxieme cas, c'est qu'il y a une gestion manuelle des "error" (et non des exceptions) et que le error_handler est personnalisé, dans ce cas, je peux rien pour toi.

    Pour palier au cas 1, j'avais écris une methode Debug::here() dans ma classe Debug, qui affiche tout de suite le contenu d'une variable malgré les ob_start()... mais c'est pas applicable ici...

  11. #11
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Mais si je donne un contenu simple à cette variable du genre $who_like = 'toto'; dans le fichier inc_who_like.php ça m'affiche une page blanche quand même alors que sans le require la page s'affiche, c'est à dire sans valeur pour la variable.
    Oui, normal dans les 2 cas, mais toujours pas de message d'erreur, il faut bien en tirer une conclusion.

    La variable "toto" est déclarée, ok.
    Mais rien n'indique qu'elle doit être affichée. (??)

    Ca donne quoi avec :

    ??

  12. #12
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    Citation Envoyé par alain31tl Voir le message
    Oui, normal dans les 2 cas, mais toujours pas de message d'erreur, il faut bien en tirer une conclusion.
    oui, l'error reporting est mal configuré: le require echoue et les traitements s'arrêtent. On le sait parce que son essai avec __DIR__ ne pouvait que échouer et il n'a pas eu de modification de symptomes. C'est donc que les symptomes habituels sont masqués.

    EDIT:
    __DIR__ n'existe que depuis php 5.3, avant il fallait faire dirname(__FILE__).

  13. #13
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Prise de tête !

    Avec l'URL rewriting, le premier fichier lancé est ew_general_controler.php.

    Pour essayer de comprendre ce qui se passe, j'ai mis ça au début du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    session_start();
    error_reporting(E_ALL | E_STRICT);
    echo 'Mauvais calcul : '.(10/0);
    require 'fichier_non_existant.php';
    echo 'démarré';
    exit;
    Aucune erreur affichée et page blanche !

    Y a un truc que je n'ai pas compris ou quoi ?

  14. #14
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Hum !

    Je ne vois plus qu'un seul truc qui pourrait générer une page blanche, ce sont des espaces dans les balises php.

    Ensuite, désolé mais je cale aussi.

  15. #15
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Bon j'ai bidouillé des trucs et ça s'est remis à fonctionner mais j'ai vraiment l'impression que je suis revenu dans l'état d'avant.

    Bref, comme disait l'autre, la pratique c'est quand tout fonctionne et qu'on ne sait pas pourquoi !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/07/2007, 22h26
  2. Réponses: 1
    Dernier message: 10/04/2007, 23h53
  3. [Fichier] Représenter un chemin vers un fichier
    Par Invité dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 26/03/2007, 19h17
  4. Réponses: 6
    Dernier message: 21/02/2007, 00h44
  5. Tester le formalisme du chemin vers un fichier ?
    Par elitost dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 07/10/2005, 15h06

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