如何禁用Symfony将_sess文件写入我的/ tmp目录

时间:2013-06-03 11:51:30

标签: session symfony tmp

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

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

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

我真的需要所有这些文件吗?任何人都可以建议一种禁用此功能的方法吗?

提前致谢

2 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

我在继承的网站上遇到了symfony 1.4.20的问题。 它正在将文件写入

/var/lib/php/sessions

每秒一次,直到服务器用尽iNode。 我试过更改settings.yml中的设置。 app.yml和PHP会话变量。 不过,什么都没看到,我唯一可以阻止它的方法是将/ var / lib / php / sessions的所有权更改为root,这会阻止创建任何会话文件。