Symfony 8.2: object mapper probe is a fatal error when symfony/translation is not installed
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
调研方向
Read src/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php around line 217 and review the condition introduced for #8627. Reproduce the reported failure with Symfony FrameworkBundle 8.2 and no symfony/translation. Change the version gate so it avoids autoloading the FrameworkBundle command with its optional parent; done when the container build succeeds in that setup.
由索引模型根据 Issue 内容生成。
描述
API Platform version(s) affected: 5.0.2, and main at 23c4876d1726b17826fbc8901791f8f843eadf42
Description
With symfony/framework-bundle 8.2 and without symfony/translation, the container build stops with a fatal error:
PHP Fatal error: Uncaught Error: Class "Symfony\Component\Translation\Command\TranslationExtractCommand" not found in vendor/symfony/framework-bundle/Command/TranslationExtractCommand.php:26
#3 vendor/api-platform/core/src/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php(217): class_exists('Symfony\\Bundle\\...')
In FrameworkBundle 8.2, Symfony\Bundle\FrameworkBundle\Command\TranslationExtractCommand extends Symfony\Component\Translation\Command\TranslationExtractCommand. FrameworkBundle 8.2 lists symfony/translation only in require-dev, so the parent class can be absent. class_exists() with autoload then includes the file, and PHP throws an Error instead of returning false.
#8627 (for #8626) checks the Translation class first, but it keeps the FrameworkBundle class as a fallback. When symfony/translation is not installed, the first check returns false, the fallback runs, and the same error occurs.
How to reproduce
composer init -n --name=x/repro --stability=dev
composer config prefer-stable true
composer require symfony/framework-bundle:8.2.x-dev
cat > probe.php <<'PHP'
<?php
require __DIR__.'/vendor/autoload.php';
use Symfony\Component\Translation\Command\TranslationExtractCommand;
use Symfony\Bundle\FrameworkBundle\Command\TranslationExtractCommand as FrameworkTranslationExtractCommand;
var_dump(class_exists(TranslationExtractCommand::class) || class_exists(FrameworkTranslationExtractCommand::class));
PHP
php probe.php
The condition is the one from ApiPlatformExtension on main. The script stops with the fatal error above.
Possible Solution
Do not autoload a FrameworkBundle class whose parent comes from an optional package. The gate needs to know only that FrameworkBundle is 7.3 or later. For example, check the version with Composer\InstalledVersions, or check a class from 7.3 that has no optional parent.
Additional Context
A production install of Maho got 8.2.x-dev and hit this error on every REST request. composer require symfony/translation is a workaround. When Symfony releases 8.2.0, every application without symfony/translation gets this error.
- 主要语言
- PHP
- 星标
- 2.6k
- 派生
- 989
- 平均合并
- 1 天 22 小时
- 30 天内合并 PR
- 100
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
api-platform/core 的其他 Issue
-
JSON:API: resource schemas (`*.jsonapi`) have `properties` but no `type: object`可能已有人在做 @ousamabenyounes 于 3 天前认领。 未关闭
难度 2/5 1 小时以内 新手友好度 80/100
api-platform/core#8701 ·
维护者通常 1 天内回复
-
JSON:API: `JsonApiCollectionBaseSchemaNoPagination` declares `data` as `type: array` without `items`未关闭
难度 2/5 1-3 小时 新手友好度 82/100
api-platform/core#8699 ·
维护者通常 1 天内回复
-
[Json-Schema] Nested resources lost externalDoc and description data可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭
难度 3/5 1-2 天 新手友好度 68/100
api-platform/core#8721 ·
维护者通常 1 天内回复
-
JSON:API: 404/405 router errors are empty, and error objects have a non-spec `type` member可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭
难度 3/5 1-2 天 新手友好度 50/100
api-platform/core#8704 ·
维护者通常 1 天内回复
-
难度 3/5 1-2 天 新手友好度 62/100
api-platform/core#8703 ·
维护者通常 1 天内回复
查看 api-platform/core 的全部 Issue
相似的 Issue
-
sync-en
难度 1/5 1 小时以内 新手友好度 77/100
维护者通常 3 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
Automattic/blocks-engine#3090 ·
维护者通常 1 天内回复
-
(php): ORT workflow always fails due to incompatibility between Pluggy 1.7.0 and Scancode-Toolkit 32.5.0可能已有人在做 @leslie-bq 于 3 天前认领。 未关闭bug
难度 2/5 1-3 小时 新手友好度 72/100
valkey-io/valkey-glide-php#375 ·
维护者通常 2 天内回复
-
难度 1/5 1 小时以内 新手友好度 88/100