【问题标题】:Confusing class loading exception Symfony 4令人困惑的类加载异常 Symfony 4
【发布时间】:2020-05-07 12:52:53
【问题描述】:

在配置我的 symfony 应用程序时,我收到关于控制器命名空间错误的错误,但我确定该文件存在于错误消息中显示的路径中,并且我的配置似乎是正确的

从资源“../src/App/*”导入服务时,预计在文件“/var/www/html/src/App/Controller/AccountController.php”中找到类“App\Controller\AccountController”,但是没有找到!检查 /var/www/html/config/services.yaml 中资源使用的命名空间前缀(在资源“/var/www/html/config/services.yaml”中加载)。

/var/www/html/config/services.yaml 文件

services:
    _defaults:
        autowire: true
        autoconfigure: true

    App\:
        resource: '../src/App/*'
        exclude: '../src/App/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}'

    App\Controller\:
        resource: '../src/App/Controller'
        tags: ['controller.service_arguments']

composer.json

"autoload": {
        "psr-4": {
            "App\\": "src/App/",
            "": "src/"
        }
    }

文件夹结构

/src:
    /App:
        /Controller:
            AccountController.php

控制器命名空间

namespace App\Controller;

【问题讨论】:

    标签: symfony4


    【解决方案1】:

    看来您使用的是 psr-0 样式的自动加载器,而不是 psr-4。

    您必须像这样编辑您的 composer.json:

    {
        "autoload": {
            "psr-4": {
                "App\\": "src/"
            }
        }
    }
    

    并将你的 Controller 目录直接移动到 src 中

    您可以将其设置到您的 composer.json 中

    {
        "autoload": {
            "psr-0": {
                "App\\": ["src/"]
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-02
      • 1970-01-01
      • 1970-01-01
      • 2011-02-03
      相关资源
      最近更新 更多