FOS UserBundle:致命错误:无法重新声明类FormAuthenticationEntryPoint

时间:2014-11-04 12:42:43

标签: php symfony fosuserbundle

Symfony2的新手,我使用FOS用户包创建了一个新项目。

当我尝试登录或注册时出现此错误:

网址:http://symfony.local/login_check

Fatal error: Cannot redeclare class Symfony\Component\Security\Http\EntryPoint\FormAuthenticationEntryPoint 

在网上看了几个小时后,我完全迷失了。

有人帮我吗?

2 个答案:

答案 0 :(得分:0)

login_check不是登录页面,它是执行登录检查脚本的路由 你检查过你的security.yml文件是否有适当的防火墙和提供商等? 你需要这样的东西:

security:
 providers:
        in_memory:
            memory: ~
        fos_userbundle:
            id: fos_user.user_provider.username_email
 firewalls:
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false

        main:
          pattern: .*
          context: user
          form_login:
              success_handler: authentication_handler
              failure_handler: authentication_handler
              provider:       fos_userbundle
              csrf_provider:  form.csrf_provider
              login_path:     /user/login
              check_path:     /user/login_check
              default_target_path: /user/dashboard
              always_use_default_target_path: true
          logout:
              path:   /user/logout
              target: /
          anonymous: true
    #fos security configurations
    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

    role_hierarchy:
        ROLE_SUPER_ADMIN: [ ROLE_USER, ROLE_ADMIN, ROLE_SONATA_ADMIN, ROLE_ADMINROLE_ALLOWED_TO_SWITCH ]

    access_control:
        - { path: ^/user/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/user/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/user/register, roles: [ ROLE_SUPER_ADMIN ] }
        - { path: ^/user, roles: [ ROLE_USER, ROLE_SUPER_ADMIN ] }
        - { path: ^/.*, role: IS_AUTHENTICATED_ANONYMOUSLY }

    acl:
        connection: default

答案 1 :(得分:0)

花了好几个小时才搞清楚,我发现问题是由于 APC 启用了......

只需关闭它,问题就会消失。

我的配置:

  • Windows 7(用于开发)
  • Apache 2.4.7
  • PHP 5.3.29
  • APC 3.1版。?