【问题标题】:Laravel 5.11 Composer Update ErrorLaravel 5.11 Composer 更新错误
【发布时间】:2016-01-10 07:29:19
【问题描述】:

oriceon-oauth-5-laravel 软件包是我朋友安装的,我从 git 中提取了代码。我运行命令作曲家更新,但它抛出以下错误

异常 'Symfony\Component\Debug\Exception\FatalErrorException'/var/ 中带有消息 'Class 'Artdarek\OAuth\OAuthServiceProvider' not found' www/html/test/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php:146

我通过在 app.php 文件中注释 service providersaliases 暂时解决了这个问题。

那么,解决此问题的正确方法是什么。在 laravel 5.11 中安装软件包后发生

【问题讨论】:

  • 您是否尝试过分离最小代码示例以便能够显示导致问题的实际代码?
  • 不,我没有。每当其他人安装 ui do composer update new package 时,我都会收到此错误。

标签: php laravel symfony laravel-5 laravel-5.1


【解决方案1】:

问题是,在您的 config/app.php 文件中,您可能会看到:

Artdarek\OAuth\OAuthServiceProvider::class,

在提供者列表中。由于您尚未安装该软件包,因此该类不存在。我想你已经弄清楚了,因为你说你注释掉了提供者。

composer.json 中,您会在脚本下看到:

"pre-update-cmd": [
    "php artisan clear-compiled"
],

这意味着每当您运行 composer update 时,它首先调用 php artisan clear-compiled,后者会加载您的配置文件,但由于缺少类而失败。

两种解决方法:

将提供者更改为字符串中的引号,就像在 Laravel 4 中一样:

"Artdarek\OAuth\OAuthServiceProvider",

(这就是为什么在 Laravel 5 / PHP 5.5 之前没有人真正遇到过这个问题)。或者……

真正的解决方案

只需运行 composer install 而不是 composer update。无论如何,这就是您应该做的事情,因为无论您的队友推动什么,都在使用 composer.lock 中的库版本。因此,如果您运行 install,它是 a) 安装已知的工作版本 b) 绕过 php artisan 命令,直到安装完成。

如果您确实必须运行composer update,则将其与--no-scripts 标志一起使用

【讨论】:

  • 我做了 composer update --no-scripts.. 它有效.. 这是最佳实践吗??
  • @karthick 与团队合作时,理想情况下,每当您的队友安装或更新软件包时,他们应该在推送之前运行所有测试。然后,当您拉取时,composer.lock 文件具有您的队友使用的确切版本#s。当您运行 composer install 时,它会安装这些确切的版本。如果您运行composer update,那么它会寻找最新版本并可能会破坏事情。所以composer install 是最佳实践,除非您有意升级库
猜你喜欢
  • 2018-06-15
  • 2021-11-03
  • 2013-05-28
  • 2016-02-06
  • 2015-10-23
  • 2015-06-29
  • 1970-01-01
  • 2018-09-08
  • 2016-05-02
相关资源
最近更新 更多