gpt4 book ai didi

php - Symfony 应用程序将配置文件写入 tmp 目录

转载 作者:行者123 更新时间:2023-12-05 04:16:25 26 4
gpt4 key购买 nike

我继承了一个旧的 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 环境中禁用了调试,但这仍然会发生。有谁知道可能导致这种情况的原因吗?

最佳答案

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

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

要了解正在发生的事情,请摘自 sfConfigCache 的片段类:

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

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

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

关于php - Symfony 应用程序将配置文件写入 tmp 目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27898631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com