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:

  • Come spiegare le richieste che apache attualmente sta eseguendo
  • Utilizzo delle ricerche RewriteMap in una RewriteCond. Possibile?
  • Come faccio ad aggiornare all'ultima versione di PHP in CentOS con yum?
  • Il mio amministratore del server desidera impostare le autorizzazioni di scrittura pubbliche in una directory
  • Montaggio di un file system su internet
  • Come formattare la parità XFS se la stabilità è la cosa più importnte
  • 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 …

    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.