Symfony 2.7.16本地运行报错:Twig_Error_Runtime,core扩展未启用
嘿,作为曾经在Symfony老版本踩过不少坑的开发者,我来帮你搞定这个Twig错误~ 既然你已经搞定了依赖安装和服务启动,那这个问题大概率是配置或者缓存的锅,按下面的步骤排查:
1. 检查Twig扩展的配置
Symfony 2.7中,Twig的核心扩展(core)应该是默认启用的,但可能项目的配置文件被修改过。你需要检查两个地方:
主配置文件
app/config/config.yml:找到twig配置块,确保包含core扩展的注册:twig: debug: "%kernel.debug%" strict_variables: "%kernel.debug%" extensions: - twig.extension.core # 确认这一行存在服务配置文件
app/config/services.yml:如果上面的配置里没有用extensions列表,那可能是通过服务标签注册的,检查是否有这个服务:services: twig.extension.core: class: Twig_Extension_Core tags: - { name: twig.extension }注意:Symfony 2.7搭配的是Twig 1.x系列,所以类名是
Twig_Extension_Core(不是Twig 2+的命名空间写法)。
2. 清除Dev环境的缓存
Symfony的缓存机制有时候会搞事情,尤其是在dev环境下。运行这个命令彻底清除缓存:
php app/console cache:clear --env=dev
一定要加上--env=dev,不然会默认清prod环境的缓存,对你当前的调试没用。
3. 确认Twig依赖版本兼容
虽然你已经跑了composer install,但还是要确认Twig版本和Symfony 2.7匹配。Symfony 2.7要求Twig版本在~1.18到~1.23之间。运行这个命令查看当前Twig版本:
composer show twig/twig
如果版本不对,打开composer.json,把twig/twig的依赖改成"twig/twig": "~1.23",然后运行:
composer update twig/twig
4. 检查PHP基础扩展
Twig的core扩展依赖一些PHP基础扩展,比如mbstring、json。你可以在命令行运行这个命令查看已启用的PHP扩展:
php -m
如果缺少mbstring或者json,需要在PHP配置里启用它们(不同系统的配置方式不同,比如Ubuntu是sudo apt install php-mbstring,Windows是在php.ini里去掉对应行的注释)。
最后给你个小提示:Symfony 2.7是比较老的版本了,配置逻辑和现代Node项目差异挺大的,遇到问题多看看项目里的app/config目录下的配置文件,很多坑都藏在那里~
内容的提问来源于stack exchange,提问作者ajonno

