WordPress站点Timber更新后出现Twig缓存扩展致命类型错误是什么原因?
错误具体原因
核心触发逻辑
你遇到的是Timber v1.19.0版本的已知内置兼容性bug,完全由插件自动更新触发,和你手动修改站点的操作无关,具体错误逻辑如下:
- 报错的本质是类型校验失败:
Twig\CacheExtension\CacheStrategy\GenerationalCacheStrategy的构造方法要求第一个参数必须实现Twig\CacheExtension\CacheProviderInterface接口,但Timber v1.19.0传入的自定义缓存适配器Timber\Cache\WPObjectCacheAdapter未适配该接口要求,因此抛出致命类型错误。 - 该问题的根源是Timber v1.19.0打包时升级了依赖的
twig/cache-extension包到v1.4及以上版本,这个版本对核心接口的定义做了不兼容变更,但Timber自身的缓存适配器代码没有同步升级适配,导致依赖冲突。
Fatal error: Uncaught TypeError: Argument 1 passed to Twig\CacheExtension\CacheStrategy\GenerationalCacheStrategy::__construct() must be an instance of Twig\CacheExtension\CacheProviderInterface, instance of Timber\Cache\WPObjectCacheAdapter given, called in /home/runcloud/webapps/vitahomes/wp-content/plugins/timber-library/lib/Loader.php on line 282 and defined in /home/runcloud/webapps/vitahomes/wp-content/plugins/timber-library/vendor/twig/cache-extension/lib/Twig/CacheExtension/CacheStrategy/GenerationalCacheStrategy.php:43 Stack trace: #0 /home/runcloud/webapps/vitahomes/wp-content/plugins/timber-library/lib/Loader.php(282): Twig\CacheExtension\CacheStrategy\GenerationalCacheStrategy->__construct(Object(Timber\Cache\WPObjectCacheAdapter), Object(Timber\Cache\KeyGenerator), 0) #1 /home/runcloud/webapps/vitahomes/wp-content/plugins/timber-library/lib/Loader.php(182): Timber\Loader->_get_cache_extension() #2 /home/runcloud/webapps/vitahomes/wp-content/plugins/timber-library/lib/Loader.php(70): Timber\Loader->get_twig() in /home/runcloud/webapps/vitahomes/wp-content/plugins/timber-library/vendor/twig/cache-extension/lib/Twig/CacheExtension/CacheStrategy/GenerationalCacheStrategy.php on line 43
修复方案
- 紧急恢复站点访问:通过FTP或服务器文件管理器进入站点
wp-content/plugins/目录,将timber-library文件夹重命名为任意其他名称,即可临时禁用该插件,恢复站点后台访问权限。 - 永久解决问题:Timber官方已经在v1.19.1及后续小版本中修复了该兼容性问题,你可以下载对应版本的安装包手动替换现有插件目录,也可以等待插件后台推送修复后的更新包完成升级即可。
内容的提问来源于stack exchange,提问作者Yan White
相关产品推荐
相关产品推荐

