PHP7 + Symfony 3.1.0 + Vagrant:无法写入会话数据

时间:2016-06-08 16:22:17

标签: php symfony session vagrant php-7

虽然普通用户和www-data都可以访问路径 / mnt / my-proj / app /../ var / sessions / dev 以下消息:

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中获得上面的消息,但不是在prod中。 / mnt / my-proj / app /../ var / sessions / dev / mnt / my-proj / app /../ var / sessions / prod 具有相同的权限: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

我在Vagrant上的Windows 8.1 Enterprice(64Bit)和ubuntu-xenial 16.04上使用Vagrant 1.8.1。提供者是VirtualBox 5.0.20。设置大多是默认设置。使用具有完全访问权限的VirtualBox GUI共享上述路径。

亲切的问候,

树里

3 个答案:

答案 0 :(得分:3)

解决了! : - )

设置

save_path:   "/var/lib/php/sessions"
/mnt/my-proj/app/config/config.yml 中的

解决了这个问题。无需调整 /etc/php/7.0 / 中的ini-Files(这些文件仍然只有默认值)。

但是我为什么不在prod中收到错误信息?

答案 1 :(得分:0)

In addition to the previous answer from Juri Sinitson, it also solved me tweaking the VM instead of tweaking the project base.

Adding to my Vagrant bash root provisioner this line:

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

Makes the apache run as vagrant. This confers apache more power on the shared directory as it appears to the filesystem that it is the user vagrant and not the user www-data who happens to be touching there.

Maybe this is 'apparmor' related or so.

答案 2 :(得分:0)

您可以只编辑配置的文件。

vi /etc/php/7.2/fpm/pool.d/www.conf

然后将PHP的所有者角色从www-data更改为vagrant

user = vagrant
group = vagrant