Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [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

Reply #1 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

Reply #2 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

Reply #3 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

Reply #4 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

Reply #5 Posted by fg on 10/19/2007 10:46

Beau travail :)

 
Page
  1. Re: Ticket fermé mais bug encore présent