在作曲家更新时缺少服务提供商

时间:2014-06-11 21:24:59

标签: php laravel-4 composer-php

在必须通过缺少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'行。

在运行该composer命令之前,这工作正常。为什么会发生这种情况?如何解决?

Laravel 4.1。

1 个答案:

答案 0 :(得分:3)

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

由于way/generators仅是开发依赖项,因此您应该从'Way\Generators\GeneratorsServiceProvider'中删除app/config.php,以便部署计算机不会查找它。

此外,如果您正在使用开发计算机并执行composer install --no-devway/generators目录中的vendor软件包将不会安装,您将收到上述错误。因此,您必须使开发机器环境不是local,以测试它是否在部署机器中工作。