如果我将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.
),
));
最佳答案
我不知道这是否有帮助,但可以重写writeCacheFile
的默认Twig_Environment
方法。通过这样做,您可以自己创建临时文件夹并应用所需的权限,这样您的用户就不必自己创建临时文件夹。
自定义细枝环境
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/