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

This sounds like a trivial mistake, but I've been unable to find the solution for hours.

I tried to use https://github.com/michaelbonds/laravel-db2 in my Laravel project, and I added it using composer.

Here's my 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"
    }
}

Here's the error:

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

and

[Symfony\Component\Debug\Exception\FatalErrorException]     
  Class 'MichaelB\Database\DB2\DB2ServiceProvider' not found

I found a similar question before on StackOverflow, and somebody suggested that the order matters. So, here's what I did in the following order:

  1. add "michaelb/laravel-db2": "~2.0" to composer.json
  2. run php ../composer.phar update
  3. add MichaelB\Database\DB2\DB2ServiceProvider::class to the providers arary in config/app.php
  4. run php artisan migrate

Any idea on what might've been the problem?

douchuilai2355
douchuilai2355 看到答案的评论,Sven提出了一个很好的观点
接近 5 年之前 回复
dongyuchen9276
dongyuchen9276 哈哈,不客气
接近 5 年之前 回复
duanjiwang2927
duanjiwang2927 哇谢谢!这实际上解决了这个问题!我希望我有足够的声誉来投票给你100次:)
接近 5 年之前 回复
duanlu2935
duanlu2935 对不起,我跳了一下枪,说这是一个重复的问题,原来这次是包裹的错
接近 5 年之前 回复
doudou32012
doudou32012 实际上我认为他的包将在L5中运行。试试我的答案(刚刚编辑过一段时间),你应该很好
接近 5 年之前 回复
dougaoshang0237
dougaoshang0237 天啊。我不知道..这是另一个似乎与L5兼容的软件包(github.com/opb/laravel-odbc-db2)[https://github.com/opb/...知道我怎么能从我的作曲家那里得到它吗?我首先尝试使用composerrequireopb/laravel-odbc-db2,但它说“无法在任何版本中找到opb/laravel-odbc-db2包以获得最小稳定性”。然后我把我的最小稳定性降低到了dev,仍然没有成功。如何将其手动添加到我的composer.json中?我不知道版本,所以我试过“opb/laravel-odbc-db2”:“”,,但没有成功
接近 5 年之前 回复
dsi36131
dsi36131 仍然无法正常工作。我只是尝试在我的AWS实例上需要相同的包,显然它在那里给出了相同的错误。我想知道包是否有问题,因为我不能在我的机器和我的云实例上使用它。您是否可以尝试重现机器上的错误?根据您的经验,我只是想知道通常会导致这类问题的原因是什么?
接近 5 年之前 回复
dongzhenbi8919
dongzhenbi8919 尝试注释provider数组中的行,然后运行这些命令,然后取消注释它?
接近 5 年之前 回复
dongqindan4406
dongqindan4406 似乎只有在运行任何phpartisan命令而不从providers数组中删除MichaelB\Database\DB2\DB2ServiceProvider::class时才会出现错误
接近 5 年之前 回复
dortmundbvb0624
dortmundbvb0624 我可以做composerdumpautoload,但是对于phpartisanoptimize,我必须从providers数组中注释掉MichaelB\Database\DB2\DB2ServiceProvider::class。如果我没有注释掉那一行,我会得到同样的错误。我仍然试图了解这里的问题是什么,我看不出文件是否有任何问题
接近 5 年之前 回复
doulai8128
doulai8128 尝试composerdumpautoload和phpartisanoptimize
接近 5 年之前 回复
drwdvftp423507
drwdvftp423507 我尝试重做所有内容,然后使用composerinstall,并进行composerupdate--no-scripts,但它没有修复它。看起来那个链接的人还没有安装包,而我有。我实际上可以在vendor目录下看到包的文件夹,它有类DB2ServiceProvider,它正是编译器抱怨的文件。知道为什么吗?感谢您的帮助,抱歉,如果它听起来重复
接近 5 年之前 回复

1个回答



此包是 cooperl / laravel-db2 </ code>的分支。 文档是不准确的。</ p>

他将名称空间更改为 MichaelB </ code>但从未将其标记为稳定版本,因此当作曲家需要他的 ~2.0 < / code>,packagist为您提供了一个错误名称空间的旧版本。</ p>

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

以下是如何修复它:</ p>


  1. 将composer.json更改为此版本:</ p>

     “michaelb / laravel-db2”:“dev-master”
    </ code> </ pre> </ li>
  2. 运行 composer update --no-scripts </ code> </ p> </ li>
    </ ol> \ n

    然后你应该好。</ p>
    </ div>

展开原文

原文

This package is a fork of cooperl/laravel-db2. The documentation is inaccurate.

He changed the namespace to MichaelB but never tagged this as a stable version, so when you composer require his ~2.0, packagist gives you an older version with the wrong namespace.

So when you run composer update, it runs some post-cmd scripts such as php artisan optimize which tries to pull from the config file but fails because that class doesn't exist.

Here's how to fix it:

  1. Change composer.json to this version:

    "michaelb/laravel-db2": "dev-master"
    
  2. Run composer update --no-scripts

Then you should be good.

dongxueji2838
dongxueji2838 确切地说:如果没有工作版本,也没有办法报告问题,您是否希望软件在主分支上完美运行? 注册了77.000个包,有350.000个不同的版本。 应该有一个包含更好的开发人员支持的包来解决问题。 远离维护不良的包裹。
接近 5 年之前 回复
duanfang7757
duanfang7757 确实如此。 这个家伙在他的GitHub项目中禁用了问题但是......那该怎么办? 我建议teamf使用不同的项目或者原始源代码(cooperl / laravel-db2)而不是这个fork,除非他有一些理由需要fork
接近 5 年之前 回复
douwei9759
douwei9759 实际上,取决于分支是一件坏事。 打开一个问题并要求开发人员标记新版本。
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐