致命错误:类。。。在…中找不到/第146行的ProviderRepository.php

致命错误:类。。。在…中找不到/第146行的ProviderRepository.php,php,laravel,laravel-5,composer-php,laravel-5.1,Php,Laravel,Laravel 5,Composer Php,Laravel 5.1,这听起来像是个小错误,但我已经好几个小时找不到解决办法了 我尝试在我的Laravel项目中使用,并使用composer添加了它 这是我的composer.json { "name": "laravel/laravel", "description": "The Laravel Framework.", "keywords": ["framework", "laravel"], "license": "MIT", "type": "project",

这听起来像是个小错误,但我已经好几个小时找不到解决办法了

我尝试在我的Laravel项目中使用,并使用composer添加了它

这是我的composer.json

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=5.5.9",
        "laravel/framework": "5.1.*",
        "michaelb/laravel-db2": "~2.0"
    },
    "require-dev": {
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "~4.0",
        "phpspec/phpspec": "~2.1"
    },
    "autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },
    "autoload-dev": {
        "classmap": [
            "tests/TestCase.php"
        ]
    },
    "scripts": {
        "post-install-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "pre-update-cmd": [
            "php artisan clear-compiled"
        ],
        "post-update-cmd": [
            "php artisan optimize"
        ],
        "post-root-package-install": [
            "php -r \"copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ]
    },
    "config": {
        "preferred-install": "dist"
    }
}
以下是错误:

PHP Fatal error:  Class 'MichaelB\Database\DB2\DB2ServiceProvider' not found in /var/www/html/mysjsu/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php on line 146

我以前在StackOverflow上发现了一个类似的问题,有人建议订单很重要。下面是我按照以下顺序所做的:

  • 添加
    “michaelb/laravel-db2”:“~2.0”
    composer.json
  • 运行
    php../composer.phar更新
  • MichaelB\Database\DB2\DB2ServiceProvider::class
    添加到
    config/app.php
  • 运行php artisan迁移

  • 知道问题出在哪里吗?

    这个包是
    cooper/laravel-db2
    的一个分支。文件不准确

    他将名称空间更改为
    MichaelB
    ,但从未将其标记为稳定版本,因此当您需要composer的
    ~2.0
    时,packagist会为您提供名称空间错误的旧版本

    因此,当您运行
    composer update
    时,它会运行一些post-cmd脚本,例如
    php-artisan-optimize
    ,该脚本试图从配置文件中提取,但由于该类不存在而失败

    以下是修复方法:

  • 将composer.json更改为此版本:

    "michaelb/laravel-db2": "dev-master"
    
  • 运行
    composer更新--无脚本


  • 那么您应该很好。

    这个包是
    cooper/laravel-db2
    的一个分支。文件不准确

    他将名称空间更改为
    MichaelB
    ,但从未将其标记为稳定版本,因此当您需要composer的
    ~2.0
    时,packagist会为您提供名称空间错误的旧版本

    因此,当您运行
    composer update
    时,它会运行一些post-cmd脚本,例如
    php-artisan-optimize
    ,该脚本试图从配置文件中提取,但由于该类不存在而失败

    以下是修复方法:

  • 将composer.json更改为此版本:

    "michaelb/laravel-db2": "dev-master"
    
  • 运行
    composer更新--无脚本


  • 那你应该很好。

    @andrewtweber我尝试了重做一切,然后使用
    composer安装
    ,并执行
    composer更新--没有脚本
    ,但没有修复它。看起来链接中的那个家伙还没有安装软件包,而我已经安装了。实际上,我可以在
    vendor
    目录下看到包的文件夹,它有类
    DB2ServiceProvider
    ,这正是编译器抱怨的文件。知道为什么吗?感谢您的帮助,如果这听起来很重复,很抱歉
    composer dumpautoload
    php artisan optimize
    @andretwebre我可以做
    composer dumpautoload
    ,但是对于
    php artisan optimize
    我必须从providers数组中注释掉
    MichaelB\Database\DB2\DB2ServiceProvider::class
    。如果我没有注释掉那一行,我会得到同样的错误。我仍在努力理解这里的问题是什么,我看不出这辆车有什么毛病files@andrewtweber似乎只有当我运行任何
    php artisan
    命令而没有从providers数组中删除
    MichaelB\Database\DB2\DB2ServiceProvider::class
    并在providers数组中注释该行,然后运行这些命令时,才会出现错误,然后取消注释?@andrewtweber我尝试了重做一切,然后使用
    composer安装
    ,并执行
    composer更新--没有脚本
    ,但没有修复它。看起来链接中的那个家伙还没有安装软件包,而我已经安装了。实际上,我可以在
    vendor
    目录下看到包的文件夹,它有类
    DB2ServiceProvider
    ,这正是编译器抱怨的文件。知道为什么吗?感谢您的帮助,如果这听起来很重复,很抱歉
    composer dumpautoload
    php artisan optimize
    @andretwebre我可以做
    composer dumpautoload
    ,但是对于
    php artisan optimize
    我必须从providers数组中注释掉
    MichaelB\Database\DB2\DB2ServiceProvider::class
    。如果我没有注释掉那一行,我会得到同样的错误。我仍在努力理解这里的问题是什么,我看不出这辆车有什么毛病files@andrewtweber似乎只有当我运行任何
    php artisan
    命令而没有从providers数组中删除
    MichaelB\Database\DB2\DB2ServiceProvider::class
    并在providers数组中注释该行,然后运行这些命令时,才会出现错误,然后取消注释?实际上,依赖分支是一件坏事。打开一个问题,让开发人员标记一个新版本。@Sven这是真的。这家伙在他的GitHub项目中禁用了问题。。。那怎么办呢?我建议teamf使用不同的项目或原始源代码(
    cooper/laravel-db2
    )而不是这个fork,除非有某种原因他需要这个fork:如果没有工作版本,也没有报告问题的方法,您会期望软件在主分支上完美工作吗?共注册了77000个软件包,其中350000个不同版本。应该有一个具有更好开发人员支持的包来解决这个问题。远离维护糟糕的包。实际上,依赖分支是一件坏事。打开一个问题,让开发人员标记一个新版本。@Sven这是真的。这家伙在他的GitHub项目中禁用了问题。。。那怎么办呢?我建议teamf使用不同的项目或原始源代码(
    cooper/laravel-db2
    )而不是这个fork,除非有某种原因他需要这个fork:如果没有工作版本,也没有报告问题的方法,您会期望软件在主分支上完美工作吗?