首页 文章

Symfony - 缓存密钥包含保留字符

提问于
浏览
0

我正在使用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行{“exception”:“[object](Symfony \ Component \ Cache \ Exception \ InvalidArgumentException(code:0):Cache key \”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

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

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

  • 0

    所以问题在于略有不同的地方 . 在我的 User 实体中,我有 email 属性设置如下:

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

    @Assert\Valid 有一个问题,只是知道为什么只有 Valid 使用,而不是 Email() 等,但现在没关系) . 解决方案很简单,摆脱这个断言或只是用 @Assert\Email() 替换它 .

    正如我写的那样,我不知道为什么会导致这样的错误 . 你可以在这里检查和阅读问题 - https://github.com/symfony/symfony/issues/26313

相关问题