- 1
[Opened] Ticket fermé mais bug encore présent
Posted by fg on 10/16/2007 18:32
Bonjour,
Je rencontre le même problème que le ticket n°189 : http://developer.jelix.org/ticket/189
Sauf que moi, le problème ce produit sur les 2 version de Jelix (opt et dev). Ce bug ce produit de manière totalement aléatoire. Mais uniquement lors d'un accès une partie du site avec jAuth.
L'erreur que je reçoit par mail est la suivante :
Jelix fatal error : Unknow class jDaoRecordBase cheminvers/jelix/init.php 122
Ceci empêche certains utilisateur de se loguer.
J'ai fouiller un peu le code de Jelix mais je n'ai pas trouvé pourquoi il essait d'inclure automatiquement jDaoRecordBase alors que le fichier n'existe pas.
Il n'y aurait pas un problème avec le chargement automatique des classes dans le fichier init.php.
[Opened] Re: Ticket fermé mais bug encore présent
Posted by laurentj on 10/16/2007 22:26
Quand on utilise jAuth avec un dao, le record DAO du user est stocké en session. Et la classe (générée par jDao) d'un record DAO hérite de jDaoRecordBase.
Au chargement de la session, la classe du record DAO est chargée. Mais normalement, le fichier de la classe inclue aussi le fichier jDaoBase.class.php (donc la classe jDaoRecordBase). Donc PHP ne devrait pas appeler l'autoload de jelix pour jDaoRecordBase (et donc l'erreur qui en découle ne devrait pas arriver). Et je ne comprend donc pas ce qui se passe.
Est-ce qu'il y a bien un require_once de jDaoBase.class.php dans tout les fichiers générés par jDao (dans le temp) ?
Il faudrait aussi que tu loggues TOUTES les erreurs (warning, notice etc.) pour voir si il n'y en a pas d'autres avant l'erreur fatale.
[Opened] Re: Ticket fermé mais bug encore présent
Posted by laurentj on 10/16/2007 22:33
C'est quoi le nom de la dao que tu utilises pour jAuth (nom du fichier..) ? Et le nom généré pour la classe (cDaoRecord_...) ?
[Opened] Re: Ticket fermé mais bug encore présent
Posted by fg on 10/17/2007 09:27
Dans le dossier temp, il y a bien le require_once pour chaque dao :
require_once ( JELIX_LIB_DAO_PATH .'jDaoBase.class.php');
Pour les erreurs je loggue tout (fichier defaultconfig.ini.php) :
default = LOGFILE MAIL error = LOGFILE MAIL warning = LOGFILE MAIL notice = LOGFILE MAIL strict = LOGFILE MAIL exception = LOGFILE MAIL
Et il n'y aucune autre erreur avant cette erreur fatale.
Le nom de ma dao dans le fichier de config pour jAuth est :
dao = "reseller~resellers"
qui est traduit par reseller~resellers~mysql.php dans le dossier temp. Dans ce fichier ça commence par :
<?php require_once ( JELIX_LIB_DAO_PATH .'jDaoBase.class.php'); class cDaoRecord_reseller_Jx_resellers_Jx_mysql extends jDaoRecordBase { ...
Ce qui est bizarre, c'est que je n'arrive pas a reproduire ce bug sur ma machine de dev (Ubuntu/apache/php 5.2.1). Ça se produit uniquement sur le serveur de prod (gentoo/PHP 5.2.4-pl2-gentoo with Suhosin-Patch 0.9.6.2). Il n'y a pas de safe_mode d'activer...
De plus en essayant de se loguer plusieurs fois de suite, apparemment la personne arrive à se loguer au final.
[Opened] Re: Ticket fermé mais bug encore présent
Posted by bballizlife on 10/18/2007 09:52
Vraiment très gros travail sur ce bug laurentj, bien joué ! J'ajouterais qu'effectivement, je n'ai pas APC sur la machine de dev et sur celle-ci je n'ai jamais eu le bug.
N'importe comment c'est dans la doc
[Opened] Re: Ticket fermé mais bug encore présent
Posted by fg on 10/19/2007 10:46
Beau travail :)
- 1