[RISOLTO] Pagina bianca su Login/Logout

5 contenuti / 0 new
Ultimo contenuto
[RISOLTO] Pagina bianca su Login/Logout

Salve a tutti.
Ormai sono disperato, le ho provate tutte.
Il problema è questo:
Sito installato su Aruba.it perfettamente funzionante
Il sito è Multillingua: En,It

- Copio tutta la document root in locale
- Importo in locale tutto il database (svuotate le tabelle cache_xxx e watchdog)
Sul computer locale la situazione è questa:
Drupal 6.15 (come Aruba) - PHP 5.2.8 (Aruba 5.2.13) - MySql 5.1.30 (Aruba 5.0.82sp1) - S.O. Windows XP (Aruba Linux)

Avvio il sito: tutto Ok pagina iniziale, menu, navigo nel sito, ottimo.
Appena tento di entrare come utente registrato , ad esempio admin succede l'inconveniente:
Compare la pagina bianca, ma ... il login ha funzionato però;
Infatti se rimetto sul browser l'indirizzo della home page, riappare il sito, con il login eseguito.
A questo punto navigo tranquillamente come admin.
Appena tento un Logout, ancora pagina bianca ma ...... il logout ha funzionato ugualmente.
Infatti rivado sulla homepage e scopro che sono diventato utente anonimo.

Bene,ho scoperto questo, ma non riesco a trovare la soluzione:

Drupal dopo aver eseguito un login o logout esegue il reindirizzamnto alla home page mediante la funzione drupal_goto()
Infatti all'interno di drupal_goto() è chiamata questa funzione php:

<?php
function drupal_goto($path = '', $query = NULL, $fragment = NULL, $http_response_code = 302) {
......
header('Location: '. $url, TRUE, $http_response_code);
exit();
.....
}
 
?>

$url è impostata in quel momento sulla home page
Quindi in condizioni normali, sul sito di aruba o in altro sito che ho localmente e funziona,
Drupal reindirizza, tramite la header() , alla home page e quindi alla index.php e la home page è correttamente visualizzata.
Invece nel mio caso si ferma, non scatta il reindirizzamento.... MA PERCHE' ??????
A qualcuno è mai successo?
Grazie a tutti

Se sei in locale, dai un occhiata ai log di Apache, probabilmente ti diranno il perchè...

John

Più imparo, più dubito.

Ciao John, si li avevo guardati, ma purtroppo i logs non mi dicono molto.
Infatti sul login nel file di accesso access.log trovo:
"GET /it/user HTTP/1.1" 200 13253
Poi inserisco login/password e do il comando Accedi e trovo:
"POST /it/user HTTP/1.1" 200 7
... e chiaramente pagina bianca.
Vado quindi in localhost/it e trovo
"GET /it HTTP/1.1" 200 58521 pagina corretta
Do infine /logout e trovo
"GET /it/logout HTTP/1.1" 200 7 e pagina bianca ovviamente

Neppure nessun errore sul file di log degli errori
Io ho dei sospetti, che ci sia qualcosa nel meccanismo multilingua perchè l'altro sito locale che mi funziona no lo è e non vedo altre differenze.
Grazie comunque

________________________________________________________________________________________
Quando risolverai il problema, scrivi come hai fatto, e se puoi scrivi [RISOLTO]
Sarà utile ad altri. Grazie
enzoazzolini.it

Meglio controllare anche il log degli errori. La lunghezza è 7 - neanche sufficente per l'header Location: ... E poi il redirect 302 non c'è...
Puoi controllare con Firebug il valore di quei misteriosi 7 caratteri?

Più imparo, più dubito.

Allora il problema era questo:
Avevo un mio modulo che iniziava così:

[linea bianca vuota]
<?php
codice del modulo
?>

Sopra il tag di inizio c'è una riga bianca.
Questa riga è letta dal PHP e mandata in output.

Infatti quando forzavo il rientro alla homepage , dopo che su login compariva la pagina bianca, (nel frattempo ho imparato che il fenomeno si indica come WSOD - White Screen of Death ) Drupal mi inviava un errore dicendomi:
"Cannot modify header information – headers already sent etc etc" riferendosi al mio modulo.
Non ci facevo troppo caso , perchè nel mio modulo non c'erano funzioni tipo print, echo o altro.
Ritenevo quindi che fosse una conseguenza dell'errore principale che ancora non capivo.

Ora, invece quella maledetta riga sopra il tag php è la causa di tutti i miei mali.
Il tag <?php deve stare in prima linea ASSOLUTAMENTE, non ci devono essere linee vuote prima.
Per risolvere il problema o si toglie la riga o, se si può, si può impostare in php.ini la variabile output_buffering=On, che a questo punto consente di inviare all'output stringhe prima del comando header(). (Evidentemente su Aruba è così - da verificare)
Tolta la riga iniziale dal mio modulo, il Login e Logout sono tornati a funzionare alla grande !!!!

La soluzione non è farina del mio sacco, ma di un ragazzo esperto in PHP che ho trovato in rete, di cui volentieri indico il link:
http://razorblade.netsons.org

Ciao

________________________________________________________________________________________
Quando risolverai il problema, scrivi come hai fatto, e se puoi scrivi [RISOLTO]
Sarà utile ad altri. Grazie
enzoazzolini.it