Symfony2 : InvalidTypeException in ArrayNode.php line 267:


Symfony2 : InvalidTypeException in ArrayNode.php line 267:

这真的让我很困扰。我在哪里犯了错误或如何解决此错误。

我收到一个错误,InvalidTypeException in ArrayNode.php line 267: - Invalid type for path "security.providers.in_memory.memory.users.admin:{ password". Expected array, but got string

我正在从symfony食谱中实现控制器。这是我的security.yml

security:
encoders:
    Symfony'Component'Security'Core'User'User: plaintext
    Leo'CLUBBundle'Entity'User: bcrypt
role_hierarchy:
    ROLE_ADMIN: [ROLE_USER]
providers:
    chain_provider:
        chain:
            providers: [in_memory, user_db]
    in_memory:
        memory:
            users:
                admin:{ password: adminpass, roles:ROLE_ADMIN}
    user_db:
        entity:{ class: LeoCLUBBundle:User, property:username }
firewalls:
    main:
        pattern: /.*
        form_login:
            login_path: /login_path
            check_path: /login_check
            default_target_path: /
        logout:
            path: /logout
            target: /
        security: true
        anonymous: true
access_control:
    - { path: /login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: /user, roles: ROLE_ADMIN }
    - { path: /.*, roles: IS_AUTHENTICATED_ANONYMOUSLY }

空间和意图在Yaml中非常重要,所以要改变

admin:{ password: adminpass, roles:ROLE_ADMIN}

admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }

也改变

entity:{ class: LeoCLUBBundle:User, property:username }

entity: { class: LeoCLUBBundle:User, property: username }

手动修改 composer.json 和 composer.lock 文件后,我遇到了同样的问题。

修改后,尝试使用"作曲家需要symfony/mailer"安装邮件程序,我在"您的要求无法解析为一组可安装的软件包"下出现许多错误。":

问题1- 根 composer.json 需要 symfony/asset 6.0.* ,找到 symfony/asset[v6.0.0, v6.0.1],但该软件包通过部分更新修复到 v4.4.27(锁定文件版本),并且该版本不匹配。确保将其列为更新命令的参数。

问题2- 根 composer.json 需要 symfony/console 6.0.* ,找到 symfony/console[v6.0.0, v6.0.1, v6.0.2],但该软件包通过部分更新修复到 v4.4.36(锁定文件版本),并且该版本不匹配。确保将其列为更新命令的参数。

问题3.....等等"

为了解决这个问题,我不得不进一步修改composer.jsoncomposer.lock,直到" composer update "symfony/*" -W"工作正常,除了"security.firewalls.main"下的消息"无法识别的选项"匿名"。

我发现security.yaml文件被更改了:不是"懒惰:真",而是"匿名:懒惰"。

恢复为"懒惰:真",不再有错误消息。