【问题标题】:How do I disable Symfony from writing _sess files to my /tmp directory如何禁止 Symfony 将 _sess 文件写入我的 /tmp 目录
【发布时间】:2013-06-03 11:51:29
【问题描述】:

我是 symfony 的新手,负责一个不是我建立的网站。由于某种原因,该站点位于实时服务器上,但在开发模式下运行。 - 我不知道为什么??

除此之外 - 网站不断将 _sess 文件写入我的 /tmp 目录。每个 _sess 文件的内容完全相同。见下文:

_symfony2|a:3:{s:10:"attributes";a:0:{}s:7:"flashes";a:0:{}s:6:"locale";s:2:"en";}

我真的需要所有这些文件吗?谁能建议一种禁用此功能的方法?

提前致谢

【问题讨论】:

  • 我不认为这是正常行为,我认为这是项目中设计的一个功能(而不是来自 Symfony2 本身),也许是一个监听器?或者可能是安装在您机器上的监控软件,它在 tmp 中记录会话 (_sess)?
  • 好吧,如果您查看 _sess 文件(上面发布)中的编码数据,它包含字符串:'_symfony2',因此它必须由 symfony2 网站生成。您能提出一种防止这种情况发生的方法吗?

标签: session symfony tmp


【解决方案1】:

Symfony2 的默认会话存储将会话信息写入文件。这些文件写入的位置由配置参数 framework.session.save_path 确定。其默认值为 %kernel.cache.dir%/sessions。这意味着在 symfony 的默认安装中,会话文件将被写入环境的缓存目录。

但是,这可能是一个问题,因为每次部署应用程序时都必须清除缓存目录,从而将所有用户注销。因此,大概您的应用已配置(很可能在 config.yml 中)将会话文件存储在 /tmp 中。

据我了解,过期的会话应该在某个时候进行垃圾收集。 Symfony 也有一些影响这一点的配置参数——参见FrameworkBundle Configuration。我不知道您的网站有多少流量,但显然您确实需要活动会话的会话文件。如果你认为你有很多过期的会话,你可以尝试调整 gc 配置参数。

或者,如果在 /tmp 中有会话文件是特别的问题,您可以重新定位它们(​​通过更改 framework.session.save_path 的值)或use PDOSessionHandler to store sessions in the database

【讨论】:

  • 很好的答案,信息量很大。我会调查你提出的观点并报告……
【解决方案2】:

我继承的一个网站上的 symfony 1.4.20 有这个问题。 它正在将文件写入

/var/lib/php/sessions

每秒,直到服务器用完 iNode。 我尝试更改 settings.yml 中的设置。 app.yml 和 PHP 会话变量。 虽然没有任何效果,但我可以阻止它的唯一方法是将 /var/lib/php/sessions 的所有权更改为 root 并阻止创建任何会话文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-15
    • 2020-06-11
    • 1970-01-01
    • 2018-09-11
    • 2011-09-10
    • 1970-01-01
    • 2016-02-07
    • 1970-01-01
    相关资源
    最近更新 更多