我正在将Symfony部署到web服务器,一旦部署,我想清除缓存。我现在使用的umask是0000,以避免任何潜在的权限问题(我在部署用户下进行清理,并在apache用户下运行站点)。
我使用/var/symfony/cache/projectname/branchname/environment
和/var/symfony/log/projectname/branchname/environment
作为dirs
来保存缓存和日志。这些都是在AppKernel.php
文件中配置的。
当我部署(使用'php bin/console cache:clear——env=prod——no-debug')时,我得到一条消息说:
(RuntimeException)无法创建日志目录()
我已经在/var/symfony/log/dir中创建了一个文件,它工作得很好,所以你知道为什么缓存清除命令失败吗?
我们正在使用/var/symfony/
dir的粘性位来设置权限为drwxrws--t
,以便当我们作为部署用户进行缓存清除时,它可以将用户设置为apache和组设置为www,它们都在www组中。
似乎Symfony不会创建目录结构来存储日志(尽管它似乎为缓存创建)。这意味着日志目录(在本例中为/var/symfony/log/projectname/branchname/environment/
)需要在清空缓存之前存在。
在我的例子中,为了解决这个问题,我将在我的部署(shell)脚本中运行检查以确保目录存在,如果不存在则创建它。
注意:如果你浏览到站点(并且权限正确),它将创建日志目录。但是,如果您使用控制台清除缓存命令,它将不会创建路径,并且将失败。