我有以下环境: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配置文件中找到任何路径配置。
感谢任何帮助。
最佳, 拉莫
答案 0 :(得分:2)
这也已在官方资产存储库as an issue中引用。由于您可以通过环境变量sys_get_temp_dir()
(以及其他)设置TMPDIR
,我建议您为转储执行此操作。您可以将其基于当前的unix时间,或者您正在部署的提交,或者应用程序,时间和意图的组合。真的,任何事情都可行。负责设置缓存位置is here的行,以防你想要分叉Assetic并改变它,这也是非常可行的。我建议首先建议TMPDIR
路线以确认可能的修复方法。
小编辑,还有this pull来解决此问题。