Symfony - 缓存键包含保留字符

时间:2018-02-07 12:20:14

标签: php symfony caching symfony-3.4

我使用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:未捕获的PHP异常Symfony \ Component \ Cache \ Exception \ InvalidArgumentException:" Cache key" myuser.email@address.com"包含保留字符{}()/ \ @:" at /Sites/project/vendor/symfony/symfony/src/Symfony/Component/Cache/CacheItem.php第162行{"例外":" [对象](Symfony \ Component \ Cache \ Exception \ InvalidArgumentException(代码:0):缓存密钥\" myuser.email@address.com \"包含保留字符{}()/ \ @:at / Sites / project / vendor / symfony / symfony / src / Symfony / Component / Cache / CacheItem.php:162)"} []

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

2 个答案:

答案 0 :(得分:0)

你应该看一下:https://github.com/php-cache/issues/issues/49

使用0.4.3的缓存/缓存包。 0.4.4破了。您可以更改缓存包版本。

答案 1 :(得分:0)

所以问题出现在略有不同的地方。在我的User实体中,我设置了email属性:

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

@Assert\Valid出现了问题,只是不知道为什么(尽管事实上我不知道为什么只使用Valid,而不是Email()等,但是现在没关系)。 解决方案很简单,摆脱这个断言或者只用@Assert\Email()替换它。

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