0

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

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

我们使用的是 Twig 1.22.2,没有 symfony 的其余部分。我正在检查请求的密钥,但该文件不存在。twig 不应该在调用 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 总是希望文件存在于第一次命中的每个应用程序中,而不是这种情况!

4

1 回答 1

0

好的,进行了更多测试,似乎我们的自定义错误处理程序对警告做出了错误的反应并引发了异常。只有在他正确记录的通知上。看来这个案子现在已经解决了。树枝上没有虫子

于 2015-09-28T15:25:43.193 回答