2016-06-08 42 views
5

anche se il percorso /mnt/my-proj/app/../var/sessions/dev è accessibile sia per l'utente normale e www -Data Ricevo il seguente messaggio:PHP7 + Symfony 3.1.0 + Vagrant: Impossibile scrivere i dati della sessione

Warning: session_write_close(): Failed to write session data (user). Please verify that the current setting of session.save_path is correct (/mnt/op-accounting2/app/../var/sessions/dev) 

Ho ricevuto il messaggio sopra solo in dev, ma non in prod. /mnt/my-proj/app/../var/sessions/dev e /mnt/my-proj/app/../var/sessions/prod hanno gli stessi pemissions: 777 .

Il percorso di cui sopra è montato come segue:

# mount -t vboxsf -o uid=1000,gid=33,umask=000 my-proj /mnt/my-proj; 

che cosa sto facendo di sbagliato?

Ho letto le seguenti posti, ma sono riuscito a trovare alcuna soluzione per me:

PHP session handling errors

https://github.com/NewEraCracker/suhosin-patches/issues/3

PHP7 + Symfony 2.8, Failed to write session data

sto usando Vagrant 1.8.1 su Windows 8.1 Enterprice (64 bit) e ubuntu-xenial 16.04 in Vagrant. Il provider è VirtualBox 5.0.20. Le impostazioni sono per lo più quelle di default. Il percorso sopra è condiviso utilizzando la GUI di VirtualBox con accesso completo.

Cordiali saluti,

Juri

risposta

3

risolto! :-)

Impostazione

save_path: "/var/lib/php/sessions" 

in /mnt/my-proj/app/config/config.yml risolto il problema. Qualsiasi regolazione dei file ini in /etc/php/7.0/ non era necessaria (questi file hanno ancora solo valori predefiniti).

Ma mi aggiro perché non ho ricevuto il messaggio di errore in prod?

+0

Mi hai salvato !!Avendolo successo con SF3 + PHP7 + Vagrant, probabilmente è legato al fatto che '/ vagrant' è condiviso con l'host e l'host è Windows. - ** NOTA: ** Ovviamente questo differisce da devel e production, quindi considera l'aggiunta di 'save_path' a una cosa parametrizzabile in' parameters.yml' come 'session_save_path:"/var/lib/php/sessions "' e 'session_save_path:"% kernel.root_dir%/../var/sessions /% kernel.environment% "' rispettivamente nei parametri di sviluppo e di produzione e quindi usa 'save_path:"% session_save_path% "' in 'config.yml' . –

+0

Ancora non capisco il motivo per cui questo aiuta come le autorizzazioni sono buone su 'var/sessions' pure. – Mantas

0

In aggiunta alla risposta precedente di Juri Sinitson, mi ha anche risolto modificando la VM invece di modificare la base del progetto.

Aggiunta al mio Vagrant provisioner radice bash questa linea:

sed -i "s/www-data/vagrant/g" /etc/apache2/envvars 
service apache2 restart 

fa girare Apache come vagrant. Questo conferisce apache più potere sulla directory condivisa come appare al filesystem che è l'utente vagrant e non l'utente www-data che si trova a toccare lì.

Forse questo è "apparmor" correlato o così.

Problemi correlati