Come gestire questa “sessione non è riuscito a scrivere file” errore in PHP?
-
26-09-2019 - |
Domanda
Sto usando il quadro Kohana 3, e sto usando il driver nativo di sessione.
Per qualche ragione, di tanto in tanto le sessioni non riescono a scrivere ai loro file.
Warning: session_start() [function.session-start]: open(/tmp/sess_*****, O_RDWR) failed: Permission denied (13) in /home/site/public_html/system/classes/kohana/session/native.php on line 27
Sono abbastanza sicuro Kohana ha un proprio nel gestore degli errori incorporato, ma non viene attivato con questo errore (vale a dire si presenta come un normale errore di PHP, non l'errore Kohana).
(fonte: alexanderdickson.com )
Chiunque abbia mai usato Kohana noterà questo sembra aver bypassato la gestione degli errori di Kohana (forse impostato con set_error_handler()
).
Esiste un modo per fermare questo errore venga visualizzato senza il passaggio dalla sessione nativa (cioè basato su file) del driver?
Devo solo dare le buone pratiche di avvio e antepongono un soppressore errore @
al session_start()
nel codice di base di Kohana? Dovrei rilassare il error_reporting()
?
Grazie
Soluzione
Si chiama ini_set('session.save_path', APPPATH.'sessions')
(sostituire APPPATH.'sessions'
con la directory che si desidera) in bootstrap.php alle sessioni di forza da scrivere application/sessions
. Ciò consentirà di aumentare la sicurezza di utilizzare le sessioni native e dovrebbe risolvere il problema.
Altri suggerimenti
E 'a direttiva session.save_path di PHP, è possibile ignorare per qualche cartella scrivibile in php.ini, oppure si può provare questo nel vostro .htaccess;
php_value session.save_path '/path/to/folder/you/can/write'
Modifica: solo così non dimentico, mettere il vostro livello di cartella di sessione personalizzato sotto la htdocs / public_html / qualunque cosa
.Anche se, tutto questo è un po 'eccessivo perché si può chiedere al proprio amministratore di server gentilmente di verificare qual è il problema con le autorizzazioni.
Questo significa che il vostro interprete PHP non ha permessi di scrittura in / tmp. Chiedi all'amministratore del server di correzione che -. È estraneo per la vostra applicazione
Nel caso in cui non ci sono collisioni con i file di sessione di diversi processi php (che funziona sotto diversi utenti): Dando loro diversi dirs sessione temporanei avrebbero aiutato. Ad esempio, è possibile spostarli da / tmp a / path / to / homedir / phptmp e utilizzare una struttura come quella:
/path/to/homedir/
/path/to/homedir/htdocs
/path/to/homedir/phptmp
/path/to/homedir/logs