2016-06-08 8 views
5

obwohl der Weg /mnt/my-proj/app/../var/sessions/dev zugänglich ist sowohl für den normalen Benutzer und www -data bekomme ich die folgende Nachricht:PHP7 + Symfony 3.1.0 + Vagrant: Fehler Sitzungsdaten schreiben

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) 

Ich bekomme die obige Nachricht nur in Dev, aber nicht in prod. /mnt/my-proj/app/../var/sessions/dev und /mnt/my-proj/app/../var/sessions/prod haben die gleichen pemissions: 777 .

oben

Der Pfad folgend montiert ist:

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

Was mache ich falsch?

Ich habe folgende Beiträge gelesen, konnte aber keine Lösung für mich gefunden:

PHP session handling errors

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

PHP7 + Symfony 2.8, Failed to write session data

Ich bin mit Vagrant 1.8.1 unter Windows 8.1 Enterprice (64Bit) und Ubuntu-Xenial 16.04 in Vagrant. Der Anbieter ist VirtualBox 5.0.20. Die Einstellungen sind meist Standardeinstellungen. Der obige Pfad wird über die VirtualBox GUI mit vollem Zugriff freigegeben.

Mit freundlichen Grüßen

Juri

Antwort

3

GELÖST! :-)

Einstellung

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

in /mnt/my-proj/app/config/config.yml das Problem gelöst. Jegliche Anpassung von ini-Dateien in /etc/php/7.0/ war nicht notwendig (diese Dateien haben nur noch Standardwerte).

Aber ich wandern, warum habe ich diese Fehlermeldung in Prod nicht bekommen?

+0

Sie haben mich gerettet !!Passiert mir mit SF3 + PHP7 + Vagrant, wahrscheinlich hängt es damit zusammen, dass '/ vagrant' mit dem Host geteilt wird und der Host Windows ist. - ** HINWEIS: ** Natürlich unterscheidet sich dies zwischen devel und production, also überlegen Sie sich den 'save_path' in eine parametrisierbare Sache in' parameters.yml 'wie' session_save_path: '/ var/lib/php/sessions '' und hinzuzufügen 'session_save_path:"% kernel.root_dir%/../var/sessions /% kernel.environment% "' in den Parametern devel und production und dann 'save_path:"% session_save_path% "' in 'config.yml' . –

+0

Ich bekomme immer noch nicht den Grund, warum dies hilft, da die Berechtigungen auch auf 'var/sessions' gut sind. – Mantas

0

Zusätzlich zu der vorherigen Antwort von Juri Sinitson, löste es mich auch, die VM zu optimieren, anstatt die Projektbasis zu optimieren.

Hinzufügen zu meinen Vagrant bash root provisioner diese Zeile:

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

macht den Apache laufen als vagrant. Dies verleiht dem freigegebenen Verzeichnis mehr Macht, da es für das Dateisystem erscheint, dass es der Benutzer vagrant ist und nicht der Benutzer www-data, der sich zufällig dort befindet.

Vielleicht ist dies 'apparmor' verwandt oder so.