我将 Contao 网站从 4.13.38 升级到 5.3.1。一切都很成功,Contao Manager 工作正常,但网站无法运行。该错误记录在 var/logs 中并指向不存在的服务“contao.image.image_sizes”:
Uncaught PHP Exception Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException: "You have requested a non-existent service "contao.image.image_sizes". Did you mean one of these: "contao.image.imagine", "contao.image.imagine_svg", "contao.image.resizer", "contao.image.sizes"?" at Container.php line 263
{
"exception":
"[object] (Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException(code: 0): You have requested a non-existent service "contao.image.image_sizes". Did you mean one of these: "contao.image.imagine", "contao.image.imagine_svg", "contao.image.resizer", "contao.image.sizes"? at /opt/testportal/vendor/symfony/dependency-injection/Container.php:263)"
}
{
"request_uri": "https://testportal/contao/login",
"request_method": "GET"
}
FE 和 BE 都不起作用。
这可能是什么问题?我在网上寻找解决方案,但虽然有类似的问题,但我没有找到真正的解决方案。
除了 contao-core 捆绑包之外,还安装和升级了 rocksolidthemes (madeyourday) 插件。
最后,
我们解决了问题。在文件夹配置中,应添加文件services.yaml,其中包含以下代码:
services:
contao.image.image_sizes:
class: Contao\CoreBundle\Image\ImageSizes
public: true
arguments:
- '@database_connection'
- '@event_dispatcher'
- '@contao.translation.translator
这与 core-bundle 中服务 contao.image.sizes 的配置相同,但由于某种原因,系统正在搜索 contao.image.image_sizes。由于该服务不存在,我们将定义复制到缺失服务的名称下。
我在某个地方找到了这段代码,这可能就是系统搜索contao.image.image_sizes
的原因public static function getImageSizes()
{
@trigger_error('Using System::getImageSizes() has been deprecated and will no longer work in Contao 5.0. Use the contao.image.image_sizes service instead.', E_USER_DEPRECATED);
return static::getContainer()->get('contao.image.image_sizes')->getAllOptions();
}