OVH Cloud OVH Cloud

Pb avec DB PEAR

2 réponses
Avatar
piache p.
Bonjour,
J'ai un problème bizarre avec le module DB de PEAR que je teste en ce
moment. Je m'explique :
Le module est présent dans le répertoire PEAR, ce répertoire est bien
sûr référencé comme il se doit dans dans la liste des inclusions à
parcourir dans php.ini
D'ailleurs la directive include "DB/DB.php" fonctionne puisqu'en
placant des echos aux endroit statégiques (avant et après la
définition de la classe DB) il apparaissent à l'éxécution du script.
lorsque mon progarmme comporte ceci :

include("DB/DB.php");
$db = DB::connect("$dsn");
// $dsn est evidemment bien formé

Je me reçois systématiquement l'erreur :
Fatal error: Undefined class name ' db' in c:\program
files\easyphp\www\phpaie\user\inscription.php on line 25

Le plus troublant (enfin pour moi), c'est qu'il me semble que la
méthode 'connect' n'est pas appelée. J'ai essayé de tracer mais rien à
faure ça n'entre pas. (où alors l'interprétation d'une classe se fait
en deux passes analyse/éxécution dont la première n'autorise pas les
outputs ?? peut on confirmer ?)

Merci.

2 réponses

Avatar
Marc
include("DB/DB.php");
$db = DB::connect("$dsn");
// $dsn est evidemment bien formé



remplace include par require, en cas d'erreur, require provoque
une sortie du programme.

sinon, il faudrait que tu nous montre ou ton include_path.

echo ini_get('include_path');

d'autre part en cas d'erreur, error_reporting(E_ALL) permet
de traquer toutes les petites erreurs invisibles.

Avatar
piache p.
Le 03 Jul 2003 14:04:42 GMT, xav à écrit:

Salut,
Euhh, tu est sur de toi avec le "DB/DB.php" ??
Chez moi (et c'est standard normalement) DB.php est au premier niveau
d'inclusion de PEAR
Donc l'include est : include "DB.php"; tout court, apres DB.php va
chercher dans le rep DB/ le bon driver correspondant a ton DSN.



Ben oui mais non ;-)
Apparament ça marche bien comme ça et ça me semble logique :
PEAR.php se trouve à la racine de l'inclusion et les modules sont
dans leurs sous répertoires. Par exemple j'utilise quickform et il est
placé dans le sous repertoire HTML de PEAR et inclus avec :
require_once ("HTML/QuickForm.php");
Maintenant si il y a moyen de faire plus simple en mettant juste le
nom du module je suis prenneur.


pareil, pour le DSN, tu n'est pas obligé de le quoter, ca ralentit juste
...

Et sinon pour savoir ce qu'il advient de ton connect, ben tu lui met un
print_r : print_r(DB::Connect($dsn)), ou bien quelque chose de plus
conventionnel :

require_once "DB.php";
$dbÛ::Connect($dsn);
if (DB::isError($db) {
die($db->getDebugInfo());
}


J'ai fait cela, et cela ne m'a pas avancé parce que le problème était
à la fois beaucoup plus sioux et beaucoup plus con. (Voir le post
précédent).

P.