Похоже, что функция getTimestamp () twig не полностью совместима с 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, и команда веток должна адаптироваться к этим изменениям. По умолчанию ветка всегда ожидает, что файл будет там, что для каждого приложения при первом попадании, а не в случае!
Хорошо, протестировано немного больше, и кажется, что наш пользовательский обработчик ошибок неправильно реагирует на предупреждения и выдает исключение. Только в уведомлениях он записывал это правильно. Похоже, это дело сейчас раскрыто. Нет ошибки в ветке
Других решений пока нет …