Dopo l’ultimo aggiornamento a PHP 5.3.2 mi è capitato ogni tanto di incorrere nel seguente errore generato dalla funzione session_start():
session_start() [function.session-start]: ps_files_cleanup_dir: opendir(/var/lib/php5) failed: Permission denied (13)
La directory /var/lib/php5 è la directory di default dove php salva i file delle sessioni e dove il garbage collector deve passare per eliminare le sessioni scadute, il problema sta nei permessi impostati a drwx-wx-wt che impedisce al garbage collector di php di poter entrare a cancellare i files.
I mantainer del pacchetto php per Debian e Ubuntu hanno disabilitato il garbage collector da php.ini impostando session.gc_probability = 0 e hanno creato uno script in cron che si occupa della pulizia dei file di sessione.
Avendo aggiornato php ho mantenuto la configurazione precedente non facendo aggiornare il php.ini durante l’installazione e
cercando su google ho scoperto che è un problema di configurazione di php, aggiornando la versione ho mantenuto il vecchio php.ini dove il session.gc_probability non era impostato e per default è impostato a 1, quindi per risolvere questo problema è bastato modificare php.ini (per installazioni di default si trova in /etc/php5/apache2/php.ini o comunque si trova creando una pagina con il seguente codice <?php phpinfo();?>) aggiungendo la riga session.gc_probability = 0 o modificando quella esistente se presente, e riavviando apache.