Attenzione: session_destroy (): tenta di distruggere la session non inizializzata con phpCas

Oggi sto affrontando un problema con la libreria phpCas https://wiki.jasig.org/display/CASC/phpCAS .

Il problema è il seguente, quando provo a utilizzare qualche function di disconnessione, ho ricevuto il messaggio

Warning: session_destroy(): Trying to destroy uninitialized session 

Dopo aver dato una rapida occhiata al codice della libreria di phpCas, riesco a capire da where viene il problema, ecco un frammento di una function di logout:

 session_write_close(); header('Location: '.$cas_url); phpCAS::trace("Prepare redirect to : ".$cas_url); session_unset(); session_destroy(); 

Il problema sembra essere che session_write_close() realtà chiuda la session, quindi session_destroy() non può funzionare.

Ho cercato di inserire session_write_close() nel commento e ha funzionato come un incantesimo ma port a due domande:

  • Il problema arriva davvero da lì? O dovrebbe funzionare?

  • Se il problema viene davvero da lì, perché è lì e nessuno si lamenta? Il phpCas pensato era una libreria rinomata usata da molti.

Sembra che tu abbia estratto il branch principale (2af859ff76) – appena controllato e che abbia un errore. Dovresti:

  • Guarda uno dei rami di rilascio, come 1.3-stabile
  • Registra questo bug con l'autore

Come suggerisce il manuale " session_write_close – Scrivi i dati della session e termina session " Quindi stai ricevendo un avvertimento equo. come session è stata già chiusa.

FYI

hai bisogno di session_start (); prima che tu possa distruggerlo

anche l'intestazione ("Posizione …) invia intestazioni in modo da non poter chiudere la session in seguito. Effettua il reindirizzamento dopo aver chiuso la session