twig缓存问题 - filemtime():stat失败了...... php in lib \ Twig \ Cache \ Filesystem.php 91

时间:2015-09-28 14:02:10

标签: php symfony caching twig filemtime

似乎twig getTimestamp()函数与PHP 5.5.12(windows / linux)不完全兼容,并在文件不可用时抛出异常。

public function getTimestamp($key)
{
    return (int) @filemtime($key);
}

我们正在使用Twig 1.22.2而没有symfony的其余部分。我正在检查所请求的密钥,但此文件不存在。在执行filemtime()调用之前,不应该检查文件是否存在吗?否则缓存永远不会被填充。我们正在配置以下内容:

$this->loader = new \Twig_Loader_Filesystem($options['TEMPLATE_DIR']);
    $this->twig = new \Twig_Environment($this->loader, array(
        "auto_reload" =>  true
        , "cache"     =>  'cache/twig'
    ));

像这样,永远不会创建缓存文件。我们必须禁用缓存才能使其正常工作。

"cache" => false

对于生产环境,这不起作用

另一种解决方案如下:

public function getTimestamp($key)
{
    **return false;**
    return (int) @filemtime($key);
}

然后恢复原始来源。然后缓存文件被写入磁盘,一切都像魅力一样。

我想在php内部发生了一些变化,而且twig团队需要适应这种变化。默认情况下,twig总是希望文件在那里,对于第一次打击的每个应用程序都不是这样的!

1 个答案:

答案 0 :(得分:0)

好的,测试了一下,似乎我们的自定义错误处理程序在警告和抛出异常时反应错误。只有通知他才能正确记录。看来这个案子现在已经解决了。树枝上没有错误