PHP Fatal error: spl_autoload(): Class Doctrine_Event could not be loaded in /app_path/library/Doctrine/Record.php on line 801

In un progetto ZF_1.11.11+Doctrine1.2 che sto realizzando continua a spuntare questo errore nei log, ma solo in produzione. Ho provato a cercare nel web e ho trovato indicazioni che potrebbe essere per via di Zend_Session risolvibile con la seguente istruzione alla fine del file index.php

register_shutdown_function(array('Zend_Session', 'writeClose'), true);

ma non ho riscontrato nessun miglioramento!

Qualcuno ci e' gia' passato e mi saprebbe spiegare come risolvere?

Grazie

EDIT

Finalmente ho trovato una soluzione funzionante:http://blog.ricky-stevens.com/zend-framework-doctrine-apc/#codesyntax_2

inviato 4 anni fa
JellyBelly
modificato 4 anni fa
X 1 X

Si tratta di un problema noto della gestione personalizzata della sessione. La documentazione ufficiale contiene infatti il seguente avvertimento:

When using objects as session save handlers, it is important to register the shutdown function with PHP to avoid unexpected side-effects from the way PHP internally destroys objects on shutdown and may prevent the write and close from being called. Typically you should register 'session_write_close' using the register_shutdown_function() function.

Il motivo del problema particolare che avviene usando APC spiegato in questo post:

The problem now occurs when the session save handler uses non-internal classes in some way. Since APC, as a dynamic extension, is always loaded AFTER the session module (always a static extension), and the module de-initialization is in reverse order, APC will unload all internal classes *before* the session save handler is executed. So when it is finally the turn of the the session save handler, the classes will no longer be present in the class table, causing the problems described above.

Quindi prima APC elimina tutte le classi e poi viene eseguito il write del session handler che quindi, nel tuo caso, non riesce a trovare la classe Doctrine_Event.

risposto 4 anni fa
Gianni Tomasicchio
chiarissimo Gianni, quindi la soluzione che ho trovato e linkato nel primo post e' corretta?JellyBelly 4 anni fa
@JellyBelly Si!Gianni Tomasicchio 4 anni fa
Ottimo! Grazie ;)JellyBelly 4 anni fa
X 1 X X
Effettua l'accesso o registrati per rispondere a questa domanda