Problèmes d'include inexpliquable

L'include bloque l'execution du reste du fichier

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Salut,
j'avais un fichier avec un include au début, qui marchait très bien. Mais quand j'inclue un deuxième fichier php juste à la suite, ça ne marche plus…

J'ai essayé de remplacer les includes par des requires ou require_once, mais rien à faire… J'ai mis un echo en première ligne pour voir si ça bloquait dans mon fichier que j'inclu, mais non.

Quand je met mon code à inclure directement dans le fichier et que j'enlève mon include ça marche (donc ça ne vient pas du fichier à inclure).

Mon lien relatif est bon… J'arrive à court d'idée pour voir d’où cela peut provenir. Peut-être qu'il n'est pas possible de mettre deux includes l'un à la suite de l'autre. D'où cela peut-il provenir selon vous?

Mes deux includes :

1
2
3
4
<?php
    include("bdd.php"); //connexion à la BDD
    include("fonction/connexion.php"); //import des fonctions de connexions
?>
+0 -0

Juste comme ça, tu n'aurais pas dans "connexion.php" un include vers "bdd.php" ?

Et également peux-tu préciser quand tu dis "ça ne marche plus" ?

Édité par Theo

+1 -0
Auteur du sujet

Juste comme ça, tu n'aurais pas dans "connexion.php" un include vers "bdd.php" ?

Non

Et également peux-tu préciser quand tu dis "ça ne marche plus" ?

Theo

Bah, quand je regarde le code source HTML de la page ça s’arrête à l'include

Édité par SeeoX

+0 -0

Les droits sur le fichier ? les erreurs sont bien affichés dans ton environnement ? même les warnings ?

BTW: les parenthèses sont inutiles et utilise la constante DIRECTORY_SEPARATOR à la place de ton "/", c'est plus propre même si c'est pas la cause de ton erreur.

Édité par anonyme

+0 -0
Auteur du sujet

Mon fichier "bdd.php" n'a pas d'erreurs (je l'inclu sur toutes mes pages).

Je n'ai pas d'erreurs d'affiché dans mon environnement (netbeans), ni même des warnings. Ça ne marche pas mieux avec directory_separator.

Mon code

page principale :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html>
<head>
    <!--ICI mes balises metas que j'ai enlevées-->
</head>


<body>
<?php
    include("bdd.php");
    include("fonction".DIRECTORY_SEPARATOR."connexion.php");
?>

<!--ICI je crée un dizaine de tables dans ma BDD et j'ajoute une ligne à une des tables-->
</body>
</html>

Mon fichier "bdd.php" :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<?php
try{
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=***', '***', '***', $pdo_options);
}
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}
?>

Mon fichier de fonction "connexion.php" situé dans le repertoire "fonction" :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<?php
function creationhash($mdp){
    //ici le code de ma fonction
}


function hash($mdp){
    //ici le code de ma fonction
}


function login($login, $mdp){
    //ici le code de ma fonction
}
?>

Édité par SeeoX

+0 -0

Cette réponse a aidé l'auteur du sujet

Tu as pas le droit d'utiliser des variables qui sont déclaré ailleurs que dans ta fonction (sauf variable globale et exceptions).

Tester en local, c'est le nom de ta fonction qui fait bugué le truc, hash. Tu as qu'a renomé ta fonction autrement mon_hash par exemple.

Édité par anonyme

+1 -0

Hello,

Comme l'indique vibrice, ajoute ces deux directives au debut de ton script principal, et vois si tu as une erreur.

1
2
3
<?php
ini_set('display_error', 1);
ini_set('error_reporting', E_ALL | E_STRICT);

Par contre utiliser le DIRECTORY_SEPARATOR ne sert à rien dans le cas d'un include ou d'un require. Ou de tout autre chose d'ailleurs ; PHP comprend et saura interpreter de manière concise l'url des fichiers. C'est juste utile dans le cas d'un retour en fait.

Édité par Talus

"Meh." Outil de diff PHP : Totem

+0 -0
Auteur du sujet

Bonjour à tous,
ça y est, je viens de voir d'où cela venait ! Et j'ai un peu honte de moi-même… Car le problème venait que je définissait deux fois la même fonction, en effet pour tester sans avoir à inclure mon nouveau fichier "connexion.php", j'avais copié ma fonction "creationhash()" dans "bdd.php".

Ce poste m'a quand même été bien utile pour trouver d'autres erreurs dans mon code (comme le coup de la fonction que j'avais appelée "hash()").

@Talus : J'ai bien mis tes deux lignes de codes au début de mon script principal, mais ça ne m'a rien fait lors de l’exécution…

Merci à tout ceux qui sont venus m'aider, et désolé de ne pas avoir vu que c'était aussi bête…

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte