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

PHP & Base de données Discussion :

Require_once ne charge pas le fichier [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut Require_once ne charge pas le fichier
    Bonjour,

    Je suis en train de développer mon site en local, mais je bloque sur les require pour les :fichiers de connexion à la base Mysql. Le code en question :

    (toutes les pages)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    require_once("./includes/config.php");
    (config.php)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(!defined('Racine')) define(Racine, "/var/www/Monsite/"); // à changer en http://www.site.com/
    require_once(Racine . "includes/connexion.php");
    Les params de connexion (mysql_connect() etc) sont dans connexion.php. Si dans ce fichier je fais un echo 'coucou'; le test fonctionne bien. Seulement le require_once() ne fonctionne pas, j'obtiens sans arrêt "No such file or directory".

    J'ai essayé en mettant le chemin en variable :
    (n'importe quelle page
    echo "page require : " . $pageConnexion; // ici le chemin s'affiche bien
    require_once($pageConnexion) or die("Require KO"); // ne fonctionne pas mais ne renvoie pas Require KO non plus

    Je cherche depuis 2 jours, je fais des tests dans tous les sens (adresse relative, absolue, avec variable et constante, etc), mais le problème vient bien de ce fichier qui n'est pas chargé, pourtant tout test echo fonctionne bien... Voyez-vous de quoi ça peut venir ? Je sêche...

    Merci pour votre aide !

    Edit (précisions) :

    (config.php)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $requireConnexion = Racine . "includes/connexion.php";
    (autres pages)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    require_once("./includes/config.php");
     
    echo "adresse page require : " . $requireConnexion . "<br />";
    if(file_exists(Racine . "includes/connexion.php")) {
    	echo "le fichier " . Racine . "includes/connexion.php existe<br />";
    } else echo "le fichier " . Racine . "includes/connexion.php n'existe pas<br />";
     
    require(Racine . "includes/connexion.php") or die("Require KO 2");
    Résultat du file_exists() : "le fichier n'existe pas". Pourtant l'echo précédent m'affiche bien son url exacte, et je met un echo dans connexion.php et que je pointe sur cette adresse je n'ai pas d'erreur et le message s'affiche !

    Je ne comprends pas

  2. #2
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut
    Personne n'a une idée ?

  3. #3
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut
    Je retente un coup Pour faire simple :

    fichier de config générale chargé dans tous les autres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    define(Racine, "http://monsite.com");
    $requireConnexion = Racine . "includes/connexion.php";
    echo $requireConnexion.'<br />'; // Résultat : affiche bien l'adresse absolue de la page
    require_once(Racine . "includes/connexion.php") or die("require ko"); // génère une erreur 'No such file or directory'
    Or si dans le fichier de connexnio j'écris juste "test" et que je vais à la page affichée par le echo $requireConnexion; j'ai bien "test" qui s'affiche, donc le fichier est au bon endroit ! Dans ce cas pourquoi le require ne fonctionne pas ? Je ne pige décidément pas...

  4. #4
    Futur Membre du Club
    Homme Profil pro
    retraité : webmaster bénévole
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : retraité : webmaster bénévole

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Il ne manque pas un slash ?
    Je suis encore un peu béotien, mais ne manque-t-il pas un slash entre "Racine" et la suite ?

    Autrement dit, ta deuxième ligne (du 2ème post) ne devrait-elle pas être :

    $requireConnexion = Racine . "/includes/connexion.php";

  5. #5
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut
    C'est une erreur de ma part sur le post (j'ai changé l'adresse) Ceci dit tu as raison de le signaler, c'est peut-être une bêtise de ce genre qui me bloque depuis des jours

    Le code rectifié (tel qu'il est dans mes fichiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    define(Racine, "http://monsite.com/");
    $requireConnexion = Racine . "includes/connexion.php";
    echo $requireConnexion.'<br />'; // Résultat : affiche bien l'adresse absolue de la page
    require_once(Racine . "includes/connexion.php") or die("require ko"); // génère une erreur 'No such file or directory'

  6. #6
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut
    Ca y est enfin !!!

    Papounet tu m'as mis indirectement sur la voie : je pense que cela vient de l'adresse du require, ça ne doit pas être possible d'inclure une adresse absolue probablement pour la sécurité (je cherche des infos pour confirmer, si qu'lqu'un a une idée...)

    J'ai fait ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    define(Path, $_SERVER["DOCUMENT_ROOT"] . '/');
    Et ensuite require_once(Path . "includes/connexion.php"); ou tout autre fichier, ainsi je charge les fichiers inclus à partir de la racine du site, et cela fonctionne en loca; ou en distant, en adaptant le "suffixe" du define, ici '/'.

    Merci Papounet !

  7. #7
    Futur Membre du Club
    Homme Profil pro
    retraité : webmaster bénévole
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : retraité : webmaster bénévole

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    En attendant que de plus spécialistes que moi répondent, voilà quelques suggestions :

    1) as-tu essayé de donner des adresses relatives type : require_once("includes/connexion.php") or die("require ko");

    J'ai lu quelque part que les adresses absolues n'étaient pas conseillées. Je ne me rappelle plus bien la raison mais je crois que le serveur regarde les dossiers réels qui ne sont pas exactement l'url

    2) J'ai eu une fois un problème de ce genre et je l'ai "résolu" en remplaçant "require" par "include". Je n'ai pas bien compris la raison, mais cela a marché.

    Mes "réponses" n'expliquent rien, mais peuvent peut-être te permettre d'avancer ... en attendant des réponses meilleures.

  8. #8
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut
    Alors dans l'ordre :

    1/ J'utilise volontairement les adresses absolues, car avec une structure en arborecence + la factorisation de toute partie répétée (header, menu, footer, connexion, variables globales, etc) ça devient vite ingérable avec des adresses relatives, je me perds rapidement.

    2/ la différence entre require et include est une simple gestion des erreurs : si le fichier requis est manquant, require arrêtera tout le script alors qu'include continuera à charger le reste du code. C'est probablement de là que venait ton erreur Je préfère là aussi require car pour moi tout fichier est à include, je ne veux pas d'un affichage incomplet, quitte à afficher une erreur. Voir la doc pour plus de précisions.

    Là aussi ça demande à être étoffé s'il y a des volontaires

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

Discussions similaires

  1. [Python 2.X] M2crypto ne charge pas le fichier .pem
    Par grisby007 dans le forum Calcul scientifique
    Réponses: 3
    Dernier message: 02/12/2014, 16h38
  2. require_once : ne trouve pas le fichier
    Par meathook dans le forum Langage
    Réponses: 7
    Dernier message: 15/10/2012, 17h41
  3. Require_once ne charge pas
    Par GiZeus dans le forum Langage
    Réponses: 7
    Dernier message: 27/01/2010, 18h00
  4. Ne charge pas le fichier
    Par chrislav dans le forum Apache
    Réponses: 1
    Dernier message: 26/02/2009, 11h29
  5. Internet Explorer ne charge pas le fichier JS
    Par mr32 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 05/02/2006, 12h46

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