即使session.gc_probability设置为0,Symfony也会在Ubuntu 14.04上调用PHP垃圾收集器

由于某些原因,我的Symfony 2.5应用程序的标题状态调用了PHP垃圾回收器,即使当我所有的php.ini文件都有:

session.gc_probability = 0 

有谁知道如何防止这种情况发生?

错误消息即时通讯:

 Notice: SessionHandler::gc(): ps_files_cleanup_dir: opendir(/var/lib/php5) failed: Permission denied (13) in /<path-to-my-site>/var/cache/dev/classes.php line 432 

FROM PHPINFO():

 Directive Local Value Master Value session.gc_divisor 1000 1000 session.gc_maxlifetime 86400 86400 session.gc_probability 0 0 

我知道我可以给www / data用户权限/var/lib/php5文件夹或将session.save_path更改为www-data用户已经访问的地方,但是我想知道为什么这个过程是平坦的当它被禁用时被调用。

我发现它,我猜在使用app_dev.php时,symfony的最新版本默认覆盖了这个。 Symfony FrameworkBundle正在设置session.gc_probability = 1

从Symfony 3开始

但是,有些操作系统会自己处理会话并将session.gc_probabilityvariables设置为0,以阻止PHP执行垃圾回收。 这就是为什么Symfony现在覆盖这个值为1。

如果你想使用php.ini中设置的原始值,请添加以下configuration:

 # config.yml framework: session: gc_probability: null 

https://symfony.com/doc/current/components/http_foundation/session_configuration.html#configuring-garbage-collection

以前的2.x版本

要改变这个添加到您的config.yml以下

 framework: session: gc_probability: 0 

然后清除devcaching

 php app/console cache:clear 

这是它显示默认为1gc_probability地方。 为什么他们不只是从php.ini设置读不知道。

http://symfony.com/doc/2.5/reference/configuration/framework.html#gc-probability

您可以手动设置会话的path。 请参阅会话目录上的Symfony文档 。

 # app/config/config.yml framework: session: handler_id: session.handler.native_file save_path: '%kernel.root_dir%/sessions'