Problème d'include

[Résolu]
Signaler
Messages postés
13
Date d'inscription
dimanche 16 janvier 2005
Statut
Membre
Dernière intervention
27 mars 2007
-
Messages postés
13
Date d'inscription
dimanche 16 janvier 2005
Statut
Membre
Dernière intervention
27 mars 2007
-
Bonjour tout le monde,

voilà, j'ai une page index, qui en fonction des paramètres passés après l'url affiche une page différente dans la partie centrale (un div).

d'un autre côté j'ai plusieurs classes que j'instancie dans une de mes pages inclue.

en général, la page inclue s'affiche sans problème, mais il se trouve que je ne peux pas instancier les éléments de ma classe, l'erreur retournée est :
Fatal error: Class 'maClasse' not found

et pourtant mes fichiers sont biens inclus, j'ai vérifié avec get_included_files()...

je ne sais pas quoi faire... des idées? des choses à tester?

merci d'avance!

8 réponses

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Re. Petit extrait de la doc :


Si les Gestionnaires d'URL
sont activés dans PHP (ce qui est le cas par défaut),
vous pouvez localiser le fichier avec une URL (via HTTP ou
bien avec un gestionnaire adapté : voir Annexe M
pour une liste des protocoles), au lieu d'un simple chemin
local. Si le serveur distant interprète le fichier comme du code
PHP, des variables peuvent être transmises au serveur distant
via l'URL et la méthode GET. Ce n'est pas, à strictement
parler, la même chose que d'hériter du contexte de variable.
Le fichier inclus est en fait un script exécuté à distance,
et son résultat est inclus dans le code courant.

Bref : je n'ai jamais eu l'idée saugrenue d'inclure des fichiers de MON serveur, sur MON serveur, avec une url. Mais je suppose que tu te retrouves alors dans ce cas : ce qui est renvoyé est le HTML généré par le serveur distant, non pas le code php. Donc, variables, fonctions, classes, constantes...ne sont pas définies dans la page appelante (à moins de les passer par les méthodes GET ou POST).
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
Salut,

tes fichiers qui contiennnent ta classe sont bien inclus avant la déclaration de l'objet ou de la chasse héréditaire ?

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
Messages postés
13
Date d'inscription
dimanche 16 janvier 2005
Statut
Membre
Dernière intervention
27 mars 2007

oui, ils sont bien inclus avant...
en fait, même les constantes définies dans mes fichiers avec les classes ne sont pas interprétées...

je comprends vraiement pas ce qui ce passe, j'ai fait des includes avec des chemins relatifs et avec des chemins absolus... rien n'y fait...
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Salut,

envoie une portion de ton code ;-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,

bah, c'est clairement un problème d'inclusion (en tous cas ça y ressemble beaucoup). Et sans doute de chemin d'inclusion.

Mettons que tu aies :

www/site/classes/maClasse.cls.php
www/site/inc/pageIncluse.php
www/site/index.php

et que dans pageIncluse.php tu aies ceci :
<?php
require_once ('../cls/maClasse.cls.php');
$oClasse = new maClasse ();
?>

et que dans index.php tu aies :
<?php
require_once ('inc/pageIncluse.php');
$oClasse -> fonctionLambda ();
?>

tu auras une erreur dans index.php.
Parce que l'inclusion est fausse, à partir de ce fichier : maClasse.cls.php va être cherchée ici :
www/cls/maClasse.cls.php

D'où l'intérêt de définir un fichier d'inclusions, avec des constantes par exemple, définissant les chemins par rapport au root (par exemple).
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
oups :
je reprends, qques erreurs d'écriture :

www/site/cls/maClasse.cls.php
www/site/inc/pageIncluse.php
www/site/index.php
Dans maClasse.cls.php:
<?php
class maClasse {

function maClasse () {
}

function lambda () {
echo 'trucmuche';
}
}
?>
et que dans pageIncluse.php tu aies ceci :
<?php
require_once ('../cls/maClasse.cls.php');
$oClasse = new maClasse ();
?>

et que dans index.php tu aies :
<?php
<?php
require_once ('inc/pageIncluse.php');
$oClasse -> lambda ();
?>
?>
Messages postés
13
Date d'inscription
dimanche 16 janvier 2005
Statut
Membre
Dernière intervention
27 mars 2007

Merci Malalam, mais le soucis n'est pas là je pense...

attention ca va être un peu long...

j'ai mis des chemins absolus : "http://localhost/monsite/inc/maClasse.php" définis à partir d'une constante myHOME= "http://localhost/monsite/", elle même définie dans un fichier inclu dans ma page d'index :

/index.php :
<?
include(http://localhost/monsite/inc/outils.php);
// tout mon code pour faire ma gestion de page... (en-tête, menus... en fct de la session)
include(myHOME."inc/maPage.php");
?>

/inc/oulils.php :
<?
//definitions
define("myHOME", "http://localhost/monsite/");

//fichiers utiles
include(myHOME."inc/messagesErreur.php");
include(myHOME."inc/identifiants_mySQL.php");
include(myHOME."inc/fonctions_utiles.php");
?>

/inc/maPage.php :
<?
include(myHOME."classes/maClasse1.php");
$var =new maClasse1($param);
?>


et pour finir :
/classes/maClasse1.php inclut d'autres classes, en fontion de la variable myHOME.

dans ce cas, l'erreur trouvée est myHOME not defned
quand j'utilise un chemin absolu avec http://.... j'ai toujours aucune constante utilisable dans maClasse1 et dans les "sous classes"

et get_included_files() ne me renvoie aucun des fichiers inclus dans outils.php
mais ca je pense que c'est normal, ils sont compris dans outils.php.
par contre mes constates devraient être utilisables non?

Merci à vous tous, parce que là je suis perdu...
Messages postés
13
Date d'inscription
dimanche 16 janvier 2005
Statut
Membre
Dernière intervention
27 mars 2007

merci bien!