Problèmes d'include inexpliquable

L'include bloque l'execution du reste du fichier

Le problème exposé dans ce sujet a été résolu.

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
?>

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
}
?>
+0 -0

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.

+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.

+0 -0

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…

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

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