【问题标题】:Symfony unable to create the logs directorySymfony 无法创建日志目录
【发布时间】:2017-03-20 07:04:00
【问题描述】:

我正在将 Symfony 部署到 Web 服务器,部署后我想清除缓存。我现在使用 0000 的 umask 来解决任何潜在的权限问题(我在 deploument 用户下进行清除并在 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')时,我收到一条消息:

[运行时异常] 无法创建日志目录()

我已经在 /var/symfony/log/ 目录中创建了一个文件,它运行良好,所以知道缓存清除命令失败的原因吗?

我们使用/var/symfony/ 目录中的一个粘性位将权限设置为drwxrws--t,这样当我们以部署用户身份进行缓存清除时,它可以将用户设置为 apache 并将组设置为 www,它们都在www 组。

【问题讨论】:

  • 运行脚本的用户没有创建这些目录的权限。您可以预先创建 then 或授予用户在父目录中创建文件的权限。您可以在不使用 ACL 触及父级的用户/组的情况下执行此操作。如果服务器是 Linux,请查看 setfacl 和 getfacl 命令。
  • 不,这不是问题,我已经为将来的人们发布了答案。

标签: php apache symfony caching


【解决方案1】:

似乎 Symfony 不会创建目录结构来存储日志(尽管它似乎是用于缓存)。这意味着日志目录(在这种情况下/var/symfony/log/projectname/branchname/environment/需要在清除缓存之前存在。

为了解决这个问题,我将在我的部署(shell)脚本中运行检查,以确保目录存在,如果不存在则创建它。

注意:如果您浏览到该站点(并且权限正确),它将创建日志目录。但是,如果您使用控制台清除缓存命令,它不会创建路径并且会失败。

【讨论】:

    猜你喜欢
    • 2015-07-22
    • 2014-11-09
    • 1970-01-01
    • 2016-09-04
    • 2021-10-08
    • 2018-02-19
    • 1970-01-01
    • 2018-03-09
    • 2019-02-05
    相关资源
    最近更新 更多