Laravel 5.2 artisan 优化 - php_strip_whitespace 无法打开流:没有子进程

Laravel 5.2 artisan optimize - php_strip_whitespace failed to open stream: No child processes

自从 5.1 升级到 Laravel 5.2 后,当 运行 artisan 在 CircleCI 上优化 时,运行 PHP 5.6.14 , 我得到

[ErrorException]                                                                                 
php_strip_whitespace(/var/laravel/project/root): failed to open stream: No child processes

其中 /var/laravel/project/root 是 composer.json 和 vendor 所在的目录。

该命令在我的开发箱 运行 PHP 5.6.11-1ubuntu3.1 上运行良好。我遵循了官方的 5.1 到 5.2 升级指南。

Exception trace:
() at /var/laravel/project/root/vendor/classpreloader/classpreloader/src/ClassPreloader.php:124
Illuminate\Foundation\Bootstrap\HandleExceptions->handleError() at n/a:n/a
php_strip_whitespace() at /var/laravel/project/root/vendor/classpreloader/classpreloader/src/ClassPreloader.php:124
ClassPreloader\ClassPreloader->getCode() at /var/laravel/project/root/vendor/laravel/framework/src/Illuminate/Foundation/Console/OptimizeCommand.php:83
Illuminate\Foundation\Console\OptimizeCommand->compileClasses() at /var/laravel/project/root/vendor/laravel/framework/src/Illuminate/Foundation/Console/OptimizeCommand.php:64
Illuminate\Foundation\Console\OptimizeCommand->fire() at n/a:n/a
call_user_func_array() at /var/laravel/project/root/bootstrap/cache/compiled.php:1217
Illuminate\Container\Container->call() at /var/laravel/project/root/vendor/laravel/framework/src/Illuminate/Console/Command.php:169
Illuminate\Console\Command->execute() at /var/laravel/project/root/vendor/symfony/console/Command/Command.php:256
Symfony\Component\Console\Command\Command->run() at /var/laravel/project/root/vendor/laravel/framework/src/Illuminate/Console/Command.php:155
Illuminate\Console\Command->run() at /var/laravel/project/root/vendor/symfony/console/Application.php:787
Symfony\Component\Console\Application->doRunCommand() at /var/laravel/project/root/vendor/symfony/console/Application.php:186
Symfony\Component\Console\Application->doRun() at /var/laravel/project/root/vendor/symfony/console/Application.php:117
Symfony\Component\Console\Application->run() at /var/laravel/project/root/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:107
Illuminate\Foundation\Console\Kernel->handle() at /var/laravel/project/root/artisan:36

请问我如何解决这个问题?

我在 https://laracasts.com/discuss/channels/laravel/laravel-optimize-error 上找到了答案,其中 johnwheal 提到 config/compile.php 是错误的。

事实证明 config/compile.php 中的文件数组在 2015 年 4 月的一次提交中被清空 但是我看不到 升级指南中提到的更改。它已被添加到 升级指南

要解决此问题:

  • 清空 config/compile.php
  • 中的文件数组

  • config/compile.php 中的文件数组中删除 BusServiceProvider.phpConfigServiceProvider.php .

此错误的原因是 BusServiceProviderConfigServiceProvider 作为 5.1 到 5.2 过渡的一部分已被删除。尽管提供的删除所有已编译 类 的答案将解决问题,但您需要删除的唯一两个是 config/compile.php.

中的 BusServiceProviderConfigServiceProvider

'files' => [ realpath(__DIR__.'/../app/Providers/AppServiceProvider.php'), realpath(__DIR__.'/../app/Providers/BusServiceProvider.php'), // This one realpath(__DIR__.'/../app/Providers/ConfigServiceProvider.php'), // And this one realpath(__DIR__.'/../app/Providers/EventServiceProvider.php'), realpath(__DIR__.'/../app/Providers/RouteServiceProvider.php'), ],