symfony — проблема с кешированием веток — filemtime (): сбой stat для … php в lib \ Twig \ Cache \ Filesystem.php 91

Похоже, что функция 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, и команда веток должна адаптироваться к этим изменениям. По умолчанию ветка всегда ожидает, что файл будет там, что для каждого приложения при первом попадании, а не в случае!

0

Решение

Хорошо, протестировано немного больше, и кажется, что наш пользовательский обработчик ошибок неправильно реагирует на предупреждения и выдает исключение. Только в уведомлениях он записывал это правильно. Похоже, это дело сейчас раскрыто. Нет ошибки в ветке

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]