2016-06-08 63 views
5

儘管路徑/mnt/my-proj/app/../var/sessions/dev是兩個普通用戶和www訪問-data我收到以下消息:PHP7 + Symfony的3.1.0 +流浪:無法寫入會話數據

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) 

我只在dev中收到上面的消息,但沒有在產品中。 /mnt/my-proj/app/../var/sessions/dev/mnt/my-proj/app/../var/sessions/prod具有相同pemissions:777 。

的路徑上面安裝如下:

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

我在做什麼錯?

我讀過以下的職位,但可以給我找無解:

PHP session handling errors

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

PHP7 + Symfony 2.8, Failed to write session data

我使用的是流浪1.8.1在Windows 8.1 Enterprice(64Bit)和ubuntu-xenial 16.04在Vagrant中。提供者是VirtualBox 5.0.20。這些設置大多是默認設置。上面的路徑使用具有完全訪問權的VirtualBox GUI共享。

親切的問候,

樹裏

回答

3

解決了! :-)

設置

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

/mnt/my-proj/app/config/config.yml解決了這個問題。任何調整ini文件/etc/php/7.0/不是必要的(這些文件仍然只有默認值)。

但我徘徊爲什麼沒有在產品中得到該錯誤信息?

+0

你救了我!在SF3 + PHP7 + Vagrant中發生在我身上的事情,可能是因爲'/ vagrant'與主機共享,而主機是windows。 - **注意:**當然,這與開發和生產有所不同,因此可以考慮在'parameters.yml'中添加'save_path'到像'session_save_path:「/ var/lib/php/sessions這樣的參數化的東西中, 'session_save_path:「%kernel.root_dir%/ ../var/sessions /%kernel.environment%」',然後在'config.yml'中使用'save_path:'%session_save_path%''' 。 –

+0

我仍然不明白爲什麼這會有所幫助,因爲'var/sessions'上的權限也很好。 – Mantas

0

除了Juri Sinitson先前的回答之外,它還解決了我調整VM而不是調整項目基礎的問題。

添加到我的放浪的bash根供應者這一行:

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

使得運行Apache作爲vagrant。這給共享目錄提供了更多的權力,因爲它看起來像文件系統,它是用戶vagrant而不是用戶www-data碰巧在那裏。

也許這是'apparmor'相關的左右。