即使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
以前的2.x版本
要改变这个添加到您的config.yml
以下
framework: session: gc_probability: 0
然后清除devcaching
php app/console cache:clear
这是它显示默认为1
的gc_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'