Аргумент 1 передан Twig_Filter:: __ construct() должен быть экземпляром строки, указанной строкой

У меня проблема с TWIG. Этот код работает в школе, но совсем не с моим ноутбуком. Я пробовал с простым кодом, но у меня есть ошибка:

Обманутая фатальная ошибка: аргумент 1 передан Twig_Filter:: __ construct() должен быть экземпляром строки, заданной строки, вызываемой в/opt/lampp/htdocs/webalizer/projetSilex/vendor/twig/twig/lib/Twig/Расширение/Core.php в строке 139 и определено в /opt/lampp/htdocs/webalizer/projetSilex/vendor/twig/twig/lib/Twig/Filter.php в строке 35

Я использую php 5.6/SILEX 2.0/Twig 2.0

Спасибо за вашу помощь.

Мой код очень прост, но не работает:

require_once __DIR__.'/vendor/autoload.php';

$app = new Silex\Application();
$app->register(new Silex\Provider\TwigServiceProvider(), array(
'twig.path' => __DIR__.'/views',
  ));

  $app->get('/', function(){
return "hello";
  });

 $app->get('/hello/{name}', function($name)use($app){

 return $app['twig']->render('hello.twig',
                            array("name"=>$name
                                ));

 });

 $app->run();>

Ответы

Ответ 1

@CharlotteDunois указал на это, но Twig 2.0 требует >= PHP7.0, поэтому в вашей среде (php 5.6) вы не можете использовать Twig 2.0. Из Официальная документация Twig:

Предпосылки

Для запуска Twig требуется как минимум PHP 7.0.0.

Обратите внимание, что для ветки PHP5.x у вас все еще есть Twig 1.x aviable

Ответ 2

только мои 2 цента. Я не мог обновить версию PHP (общий хостинг), поэтому мне пришлось изменить версию Twig в моем пакете .json для использования версии 1.x.

Заменить эту строку: "symfony/twig-bridge": "~2.8|^3.0", → "symfony/twig-bridge": "~2.8|3.0.*",

то я добавил эту строку:

"twig/twig" : "~1.0"

и корректно работало на сервере PHP v 5.6