Assetic转储对不同的Symfony2项目使用相同的tmp文件夹

时间:2014-06-19 12:56:49

标签: symfony sass assetic capifony

我有以下环境:Ubuntu机器上有一个Apache2 Web服务器,有三个vhost(每个项目一个vhost)。这三个项目都在Symfony2上运行(但是版本不同,从2.2到2.4)。每个项目(及其路径)都有自己的用户。我正在这个服务器上部署带有capifony的项目,每个项目都有自己的收据。

Sass版 Sass 3.2.14(媒体标记)

想象一下,我正在将应用程序1部署到Web服务器。当部署过程转储所有生产资产时,它会将临​​时生成的sass文件写入以下文件夹:

  

的/ tmp / 600d657f6ac2358f30ba6bc0ab4cd7ffb6194ced

as user1。

如果我现在将应用程序2部署到Web服务器,那么转储资产就想写入完全相同的文件夹,这次是user2,并发生以下错误:

  

运行时发生错误:    * [err :: 10.0.106.103]'/ usr / bin / ruby​​''/ usr / local / bin / sass'' - load-path''/ srv / vhosts / myproject.com / release //20140619124055 /app/../web/sass'' - scss'' - cache-location''/ tmp''/ tmp / assetic_sassbsrcle'   * [错误:: 10.0.106.103]    * [err :: 10.0.106.103]错误输出:   Errno :: ENOENT:没有这样的文件或目录 - /tmp/600d657f6ac2358f30ba6bc0ab4cd7ffb6194ced/assetic_sassbsrclec20140619-27927-aw8xrk.lock

我目前的解决方法是,每次在部署之前删除此/ tmp / 600d657f6ac2358f30ba6bc0ab4cd7ffb6194ced文件夹。

我没有在所有项目的capifony收据和Symfony2配置文件中找到任何路径配置。

感谢任何帮助。

最佳, 拉莫

1 个答案:

答案 0 :(得分:2)

这也已在官方资产存储库as an issue中引用。由于您可以通过环境变量sys_get_temp_dir()(以及其他)设置TMPDIR,我建议您为转储执行此操作。您可以将其基于当前的unix时间,或者您正在部署的提交,或者应用程序,时间和意图的组合。真的,任何事情都可行。负责设置缓存位置is here的行,以防你想要分叉Assetic并改变它,这也是非常可行的。我建议首先建议TMPDIR路线以确认可能的修复方法。

小编辑,还有this pull来解决此问题。