【发布时间】:2016-02-19 08:09:00
【问题描述】:
这听起来像是一个微不足道的错误,但我已经好几个小时找不到解决方案了。
我尝试在我的 Laravel 项目中使用 https://github.com/michaelbonds/laravel-db2,并使用 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
和
[Symfony\Component\Debug\Exception\FatalErrorException]
Class 'MichaelB\Database\DB2\DB2ServiceProvider' not found
我之前在 StackOverflow 上发现了一个类似的问题,有人建议顺序很重要。所以,这是我按以下顺序执行的操作:
- 将
"michaelb/laravel-db2": "~2.0"添加到composer.json - 运行
php ../composer.phar update - 将
MichaelB\Database\DB2\DB2ServiceProvider::class添加到config/app.php中的providers数组中 - 运行
php artisan migrate
知道可能是什么问题吗?
【问题讨论】:
-
@andrewtweber 我尝试了重做所有内容,然后使用
composer install,然后使用composer update --no-scripts,但它没有解决它。似乎该链接中的人尚未安装该软件包,而我已经安装了。我实际上可以在vendor目录下看到包的文件夹,它有DB2ServiceProvider类,这正是编译器抱怨的文件。知道为什么吗?感谢您的帮助,如果听起来重复,对不起 -
试试
composer dumpautoload和php artisan optimize -
@andrewtwebre 我可以做
composer dumpautoload,但是对于php artisan optimize,我必须从提供者数组中注释掉MichaelB\Database\DB2\DB2ServiceProvider::class。如果我没有注释掉那一行,我会得到同样的错误。我还在尝试了解这里有什么问题,我看不出文件是否有任何问题 -
@andrewtweber 似乎只有在我运行任何
php artisan命令而不从提供程序数组中删除MichaelB\Database\DB2\DB2ServiceProvider::class时才会出现错误 -
尝试注释掉 providers 数组中的行,然后运行这些命令,然后取消注释?
标签: php laravel laravel-5 composer-php laravel-5.1