我使用的是Twig模板引擎和瘦框架3
我的控制器内有一个简单的函数。
public function test_twig($request, $response, $args) {
return $this->view->render($response, "login.phtml");
}当我在本地主机上运行这段代码时,它工作得很好,但是我在服务器上尝试了它,它显示了一个空页面,非常普遍的行为--页面没有动态变量--它只是HTML
我也试过这个:
$str = $this->view->fetchFromString('<p>Hi, my name is {{ name }}.</p>', [
'name' => "oussama"
]);
$response->getBody()->write($str);
return $response;它在本地主机上工作,而在我的服务器上工作(,我在服务器中有PHP5.6)
在执行后,我在这里结束编译函数不能编译一个简单的HTML文件!
/** *编译模板源代码。**@返回字符串编译的PHP源代码**@在标记、解析或编译过程中出现错误时抛出Twig_Error_Syntax
public function compileSource(Twig_Source $source)
{
try {
return $this->compile($this->parse($this->tokenize($source)));
} catch (Twig_Error $e) {
$e->setSourceContext($source);
throw $e;
} catch (Exception $e) {
throw new Twig_Error_Syntax(sprintf('An exception has been thrown during the compilation of a template ("%s").', $e->getMessage()), -1, $source, $e);
}
}我确实遵循了代码,直到构造函数中的Twig_Lexer类完全在这一行中:
'operator' => $this->getOperatorRegex(),发布于 2017-11-01 14:44:08
我只是通过更改我的composer.json要求来实现这个目标:
"slim/twig-view": "2.0",将版本更改为2.0,因为它与PHP5.6一起工作
此外,如果您使用"~5.1“版本--它不起作用--我只是为数据库依赖项提供了一个严格的版本"5.4.36”,这是很有说服力的:
"illuminate/database": "5.4.36"发布于 2017-10-31 15:11:49
自v2.0.0版本以来,Twig就需要PHP7.0或更高版本。正如您已经说过的,您在远程服务器上有PHP5.6,它们不会一起工作。您可以在远程(如果可能的话)升级到PHP 7,或者将twig降级到v1.35.0,后者仍然支持PHP 5。
来源:
发布于 2017-10-31 19:10:03
Twig 2.4需要PHP 7和更高版本。您的服务器不能满足这个要求,Twig也失败了。
我们需要通过设置自己的Twig依赖来覆盖默认的Twig依赖项。在项目conposer.json文件中添加一个Twig依赖项:
"twig/twig":"^1.18"告诉composer运行新配置并应用更改:
composer updatehttps://stackoverflow.com/questions/47035360
复制相似问题