似乎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总是希望文件在那里,对于第一次打击的每个应用程序都不是这样的!
答案 0 :(得分:0)
好的,测试了一下,似乎我们的自定义错误处理程序在警告和抛出异常时反应错误。只有通知他才能正确记录。看来这个案子现在已经解决了。树枝上没有错误