我在没有Symphony的情况下使用Twig。它通过作曲家安装并与作曲家自动加载器一起使用。在bootstrap阶段,Twig被实例化为:
// lib_get_basedir returns root directory of library.
$templatePath = sprintf("%s/data/templates", lib_get_basedir());
// $conf stores configuration values.
// tmp_dir is library directory for temporary files.
$cachePath = sprintf("%s/twig_cache", $conf->get("tmp_dir"));
$loader = new \Twig_Loader_Filesystem($templatePath);
$twig = new \Twig_Environment($loader, [
"cache" => $cachePath
]);
$gettextFun = new \Twig_SimpleFunction("gettext", function ($value) {
return gettext($value);
});
$twig->addFunction($gettextFun);
$twig->getExtension("core")->setNumberFormat(2, ",", ".");
$twig->addExtension(new \Twig_Extensions_Extension_I18n());
$twig->addExtension(new \Twig_Extensions_Extension_Intl());
$twig->addExtension(new \Twig_Extensions_Extension_Text());
当我尝试使用此Twig_Environment实例渲染模板时,我只会遇到这个无意义的错误:
Error 2: include_once(/var/lib/wlc/tmp/twig_cache/16/167b8e710323d3fc9a90a6d582652a570b1993e4d46cebd1350484a0c3ad445e.php): failed to open stream: No such file or directory
File: phar:///usr/local/share/wlc/libwlc-local-1.2.phar/vendor/twig/twig/lib/Twig/Cache/Filesystem.php
Line: 49
我已经检查了twig_cache
文件夹及其父级的权限,这应该不是问题。此错误现在也发生在只有一个用户运行php-fcgi且拥有缓存目录的机器上。
如果我false
传递$cachePath
,则不会发生此错误。
我的问题是,如何调试此问题?
答案 0 :(得分:1)
我在细长的枝条视图中遇到了与Twig v1.24.1相同的问题。 https://github.com/slimphp/Twig-View
您使用的是哪个版本?
我发现了这个提交。 https://github.com/twigphp/Twig/commit/b5df3d1dbec8b925a0eaf6e763748a74e53988e7
但是这个提交现在还没有包含在主分支中。
我在composer.json中更新了twig版本,如下所示,
"twig/twig": "1.x-dev"