【问题标题】:Symfony app writing config files to tmp directorySymfony 应用程序将配置文件写入 tmp 目录
【发布时间】:2015-01-12 09:19:47
【问题描述】:

我继承了一个旧的 Symfony 应用程序(Symfony 1.4)并且不得不将它迁移到一个新的服务器上。我没有使用 Symfony 的经验,但迁移进行得很顺利,除了一件事外一切正常;新服务器的管理员抱怨应用程序每分钟将文件写入 /tmp 目录:

来自管理员的部分示例输出:

-rw-------  1 www-data  www-data      17133 Dec 18 14:45 config_routing.yml.php4VSPbj
-rw-------  1 www-data  www-data      17133 Dec 18 14:47 config_routing.yml.php8ZZlxn
-rw-------  1 www-data  www-data      17133 Dec 18 14:38 config_routing.yml.php9NH03d
-rw-------  1 www-data  www-data      17133 Dec 18 14:38 config_routing.yml.phpGA9YrM
-rw-------  1 www-data  www-data      17133 Dec 18 14:45 config_routing.yml.phpO9fYz5
-rw-------  1 www-data  www-data      17133 Dec 18 14:47 config_routing.yml.phpOiXAYC
-rw-------  1 www-data  www-data      17133 Dec 18 14:43 config_routing.yml.phpptNyFw

还有这些文件:

config_settings.yml.php、config_databases.yml.php、config_autoload.yml.php。

我已确保在 prod 环境中禁用调试,但这仍然会发生。有没有人知道是什么原因造成的?

【问题讨论】:

    标签: php symfony1 symfony-1.4 tmp


    【解决方案1】:

    应用程序缓存目录似乎不存在,sfConfigCache 类使用的tempnam() 函数然后默认使用系统临时目录。

    默认位置是./cache,创建它并使其可被apache写入。

    要了解发生了什么,sn-ps from sfConfigCache class:

    第 344 行:$tmpFile = tempnam(dirname($cache), basename($cache)); 这里创建了/tmp/config_routing.yml.php* 文件,稍后将被重命名或复制几行:

    if (!@rename($tmpFile, $cache))
    {
      if (copy($tmpFile, $cache))
      {
        unlink($tmpFile);
      }
    }
    

    很明显,重命名和复制都失败了。

    【讨论】:

      【解决方案2】:

      Symfony 创建 yml 配置文件的缓存版本,因此它不必在每次请求时重新解析它们。这在开发和生产中都会发生。

      防止这些错误的最简单方法是为 Apache www-data 用户(或任何运行 Apache 的用户)启用写入权限。例如:

      sudo chmod 775 /tmp

      或者,您可以通过添加/修改以下行来禁用 settings.yml 文件中的缓存:

      prod: .settings: cache: false

      如果您的应用覆盖了系统默认设置,这也可能需要在您的应用的配置文件中完成。例如在文件apps/frontend/config/settings.yml

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-01
        • 2011-12-10
        • 2013-10-15
        • 2020-11-06
        • 1970-01-01
        相关资源
        最近更新 更多