PHP non può salvare le sessioni a causa di un errore di authorization

So che questa domanda deve essere stata posta (e risponde) prima, ma non posso trovare una soluzione per il mio problema in nessuna di queste domande. È un po 'strano … Il problema è che i miei script PHP (e il mio server Apache) non possono scrivere in cartelle sul mio sistema. Affatto.

Ad esempio, viene visualizzato il seguente errore durante l'esecuzione di uno script:

Errore irreversibile: un'exception eccezionale "Zend_Session_Exception" con messaggio 'Zend_Session :: start () – /var/www/subdomains/vmb/vendor/zendframework/zendframework1/library/Zend/Session.php(Line:482): Errore # 2 session_start (): aperto (/ var / www / sottodomini / vmb / application /../ var / session / sess_ingph33ir4shr1e60kkifp37s7, O_RDWR) fallito: Permesso negato (13)

Ho un VPS con CentOS 7, Apache2.4, PHP5.6 (che funziona con il mod php apache) e qualche altra cosa. Apache viene eseguito come apache utente e apache di gruppo (come impostato nel file httpd.conf). Ho impostato il path session_path in /etc/php.ini e /etc/httpd/conf.d/php.conf in /tmp/phpsessions e chown'd / chmod 'questa cartella come apache: apache 777. L'esempio sopra memorizza sessioni in un'altra cartella (che è anche chown'd / chmod 'come apache: apache 777), ma ho lo stesso errore per altre cartelle.

Quindi il mio server apache si esegue come apache: apache, ho scritto le cartelle in apache: apache che avevo bisogno e persino con 777 permessi che Apache non riesce a scrivere a queste cartelle.

Avete mai visto qualcosa del genere? Non ho prima …

  • Errore fatale PHP / APC, apc_mmap: mmap non riuscito
  • Il file non esiste: / htdocs
  • Sendmail ritarda alcuni indirizzi e-mail
  • Sto cercando di installare un server LAMP in modo che sia totalmente anonimo, qualunque suggerimento?
  • Errore PHP / Nginx (Win)
  • Il mio webserver consente di prelevare i file?
  • Come risolvere il tipo di contenuto Apache per il CSS parsed in PHP?
  • Qualsiasi guida per impostare i valori per fastcgi_buffers in Nginx config?
  • 2 Solutions collect form web for “PHP non può salvare le sessioni a causa di un errore di authorization”

    supponendo che le autorizzazioni e le properties; siano OK, credo che questo sia relativo a SELinux .

    Modo rapido e sporco: … supponendo che si ottiene Permissive durante l'esecuzione di getenforce , provare a distriggersre SELinux eseguendo setenforce 0 e colpite nuovamente il tuo script, se funziona allora è stato SELinux , da cui puoi lasciarlo disabilitato (non consigliato ) o riaccenderlo eseguendo setenforce 1 e controllare il tuo /var/log/audit/audit.log e lavorare verso la soluzione finale.

    Abbandonare SELinux a causa di alcune sfide di configuration sembra una scelta scadente. Al contrario, suggerisco di usare un po 'di tempo per conoscere e cercare una soluzione corretta. In questo caso, sembra che una soluzione potrebbe essere quella di impostare il context httpd_sys_rw_content_t (nota 'w' per scrivere) nella cartella in cui è necessario scrivere. Tieni presente che selinux fcontext esegue espressioni regolari per i target, in modo che il tuo command probabilmente sembrasse qualcosa di simile:

     semanage fcontext --add \ -t httpd_sys_rw_content_t \ '/var/www/subdomains/vmb/var/session(/.*)?' 

    L'espressione regolare applica la regola di context a tutti i file sotto la directory di session, nonché la directory stessa.

    Applica il criterio (solo una volta necessaria) alla directory e ai file in esso contenuti:

     restorecon -R /var/www/subdomains/vmb/var/session 

    Potrebbe essere molte altre cose, ma questo alless ha funzionato per me.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.