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

由于某种原因,由于某种原因,我的Symfony 2.5应用程序正在调用php垃圾回收器,即使我所有的php.ini文件都有:

session.gc_probability = 0

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

错误消息 im 正在获取:

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 

来自 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/php5session.save_pathwww-data


答案 1

我找到了它,我想最新版本的symfony在使用.Symfony FrameworkBundle 正在设置 .app_dev.phpsession.gc_probability = 1

截至Symfony 3

但是,某些操作系统会执行自己的会话处理,并将session.gc_probability变量设置为 0 以停止 PHP 执行垃圾回收。这就是为什么 Symfony 现在将此值覆盖为 1 的原因。

如果您希望使用 php.ini中设置的原始值,请添加以下配置:

# 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

然后清除开发人员缓存

php app/console cache:clear

这是它显示默认值为 .为什么他们不只是从php.ini设置中读取我不确定。gc_probability1

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


答案 2

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

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

推荐