gpt4 book ai didi

php - Twig 1.x - 配置缓存到/tmp 不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 10:23:41 25 4
gpt4 key购买 nike

如果我将 Twig 的缓存配置为 myapp/storage/cache 并手动设置正确的权限,它会工作,但将其配置为 sys_get_temp_dir()(返回 /tmp) 似乎不起作用。 /tmp 中的文件结构保持不变,尽管没有触发错误。

我的代码块是这样的:

// [...]
$app->register(new \Silex\Provider\TwigServiceProvider(), array(
'twig.path' => __DIR__ . '/templates',
'twig.options' => array(
'cache' => sys_get_temp_dir(), // If changed to myapp/storage/cache, it works.
),
));

最佳答案

我不知道这是否对您有帮助,但可以覆盖 Twig_Environment 的默认 writeCacheFile 方法。通过这样做,您可以自己创建临时文件夹并应用所需的权限,因此您的用户不必自己执行此操作。

自定义 Twig_Env

class Environment extends \Twig_Environment {
protected function writeCacheFile($file, $content){
createDirectoryTree(dirname($file));
parent::writeCacheFile($file, $content);
chmod($file,0664);
chgrp($file, 'psacln');
chown($file, 'www-data');
}
}

函数.php

function createDirectoryTree($folder) {
if (is_dir($folder)) return;
$folder = str_replace('/', DIRECTORY_SEPARATOR, $folder);
$branches = explode(DIRECTORY_SEPARATOR, $folder);
$tree = '';

$old_mask = umask(0);
while(!empty($branches)) {
$tree .= array_shift($branches).DIRECTORY_SEPARATOR;
if (!@file_exists($tree)) {

if (@mkdir($tree, 0774)){
chown($tree, 'www-data');
chgrp($tree, 'psacln');
}
}
}
umask($old_mask);
}

关于php - Twig 1.x - 配置缓存到/tmp 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42677722/

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