【问题标题】:Missing service providers on composer update作曲家更新缺少服务提供商
【发布时间】:2014-08-02 02:17:57
【问题描述】:

在不得不通过缺乏 SSH 访问权限的 FTP 手动部署到客户端服务器之前,我运行了 composer install --no-dev。当我这样做时,我收到以下错误:

PHP Fatal error:  Class 'Way\Generators\GeneratorsServiceProvider' not found in C:\www\test.dev\laravel\vendor\laravel\framework\src\Illuminate\Foundation\ProviderRepository.php on line 158
PHP Stack trace:
PHP   1. {main}() C:\www\test.dev\laravel\artisan:0
PHP   2. require_once() C:\www\test.dev\laravel\artisan:30
PHP   3. require() C:\www\test.dev\laravel\bootstrap\start.php:60
PHP   4. Illuminate\Foundation\ProviderRepository->load() C:\www\test.dev\laravel\vendor\laravel\framework\src\Illuminate\Foundation\start.php:210
PHP   5. Illuminate\Foundation\ProviderRepository->compileManifest() C:\www\test.dev\laravel\vendor\laravel\framework\src\Illuminate\Foundation\ProviderRepository.php:58
PHP   6. Illuminate\Foundation\ProviderRepository->createProvider() C:\www\test.dev\laravel\vendor\laravel\framework\src\Illuminate\Foundation\ProviderRepository.php:122
{"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","message":"Class 'Way\\Generators\\GeneratorsServiceProvider' not found","file":"C:\\Ampps\\www\\test.dev\\laravel\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\ProviderRe
pository.php","line":158}}Script php artisan clear-compiled handling the pre-update-cmd event returned with an error



  [RuntimeException]
  Error Output: PHP Fatal error:  Class 'Way\Generators\GeneratorsServiceProvider' not found in C:\www\test.dev\laravel\vendor\laravel\framework\src\Illuminate\Foundation\ProviderRepository.php on line 158
  PHP Stack trace:
  PHP   1. {main}() C:\www\test.dev\laravel\artisan:0
  PHP   2. require_once() C:\www\test.dev\laravel\artisan:30
  PHP   3. require() C:\www\test.dev\laravel\bootstrap\start.php:60
  PHP   4. Illuminate\Foundation\ProviderRepository->load() C:\www\test.dev\laravel\vendor\laravel\framework\src\Illuminate\Foundation\start.php:210
  PHP   5. Illuminate\Foundation\ProviderRepository->compileManifest() C:\www\test.dev\laravel\vendor\laravel\framework\src\Illuminate\Foundation\ProviderRepository.php:58
  PHP   6. Illuminate\Foundation\ProviderRepository->createProvider() C:\www\test.dev\laravel\vendor\laravel\framework\src\Illuminate\Foundation\ProviderRepository.php:122

每个app.php 文件都有'Way\Generators\GeneratorsServiceProvider' 行。

在运行该作曲家命令之前,这一切正常。为什么会发生这种情况以及如何解决?

Laravel 4.1.

【问题讨论】:

  • 你是否在根目录的 conposer.json 中有它来进行作曲家-更新?
  • @MarianoMontañezUreta 是的,composer.json 中有一行 "require-dev": {"way/generators": "~2.6"}

标签: php laravel-4 composer-php


【解决方案1】:

在您的 composer.json 文件中,您将 way/generators 仅作为开发机器依赖项。如果您在每个app.php 文件中都有服务提供者'Way\Generators\GeneratorsServiceProvider',那么这意味着way/generators 是开发机器以及部署机器依赖项。通过执行composer install --no-dev,您是说仅依赖于开发机器的包不应进入vendor 目录,这意味着包way/generators 未安装在vendor 目录中。这就是您收到错误的原因。

由于way/generators 只是一个开发依赖,你应该从app/config.php 中删除'Way\Generators\GeneratorsServiceProvider',这样部署机器就不会去寻找它。

另外,如果您在开发机器上工作并执行composer install --no-devway/generators 包将不会安装在vendor 目录中,您会收到上述错误。所以你必须将开发机器环境设置为不是local 来测试它是否可以在部署机器上工作。

【讨论】:

    猜你喜欢
    • 2020-01-09
    • 2014-04-15
    • 2014-12-31
    • 2016-08-30
    • 2015-11-11
    • 2019-05-17
    • 2020-08-11
    • 2017-12-26
    • 2018-07-07
    相关资源
    最近更新 更多