Symfony - 缓存键包含保留字符

Symfony - Cache key contains reserved characters

我正在使用 Symfony 3.4.4,使用 FOSUser 捆绑包进行简单安装。我创建了基于用户实体的简单表单:

$editForm = $this->createForm('Company\AdminBundle\Form\UserEditType', $user);
$editForm->handleRequest($request);

表单只有两个输入:

$builder
    ->add('name', TextType::class, ['label' => 'name and surname'])
    ->add('department', TextType::class, ['label' => 'department']);

当我提交表单(我正在发送姓名、部门和令牌)时,$editForm->handleRequest($request) 我收到异常:

request.CRITICAL: Uncaught PHP Exception Symfony\Component\Cache\Exception\InvalidArgumentException: "Cache key "myuser.email@address.com" contains reserved characters {}()/\@:" at /Sites/project/vendor/symfony/symfony/src/Symfony/Component/Cache/CacheItem.php line 162 {"exception":"[object] (Symfony\Component\Cache\Exception\InvalidArgumentException(code: 0): Cache key \"myuser.email@address.com\" contains reserved characters {}()/\@: at /Sites/project/vendor/symfony/symfony/src/Symfony/Component/Cache/CacheItem.php:162)"} []

它只发生在 prod env 上,在 dev 上它工作得很好。 我不知道,没有自定义缓存配置,没有额外的缓存包等。 OSX localhost apache with PHP 7.1.

你应该看这里:https://github.com/php-cache/issues/issues/49

适用于 cache/cache-bundle 的 0.4.3。 0.4.4 坏了。您可以更改缓存包版本。

所以问题出在稍微不同的地方。在我的 User 实体中,我 email 属性 设置如下:

/**
 * @var string
 * 
 * @Assert\Valid
 */
protected $email;

@Assert\Valid 有问题,只是不知道为什么(尽管我不知道为什么只使用了 Valid,而不是 Email() 等等。 ,但现在不重要)。 解决方案很简单,摆脱这个断言或只是用 @Assert\Email().

替换它

如我所写,我不知道为什么会导致这样的错误。您可以在此处查看和阅读问题 - https://github.com/symfony/symfony/issues/26313