【问题标题】:Laravel 5.2 artisan optimize - php_strip_whitespace failed to open stream: No child processesLaravel 5.2 工匠优化 - php_strip_whitespace 无法打开流:没有子进程
【发布时间】:2016-04-13 09:37:47
【问题描述】:

自从从 5.1 升级到 Laravel 5.2,在 CircleCI 上运行 artisan optimize 时,运行 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

请问有什么办法可以解决这个问题吗?

【问题讨论】:

  • 这个错误似乎与类加载器/优化器试图加载一个不存在的类/文件有关。尝试检查您的 config/app.php 中您可能添加的任何类。也尝试转储作曲家自动加载。
  • 你能在哪里解决?
  • @RCrowt 我尝试使用来自raw.githubusercontent.com/laravel/laravel/master/config/app.php 的默认config/app.php,但没有运气。是的,我试过 composer dump-autoload,还是没有运气。
  • @NestorMataCuthbert 还没有。我现在没有想法。
  • 是的我也是, 暂时还得做,我会继续找东西,如果我看到解决方案会告诉你

标签: php laravel laravel-5 laravel-5.2 circleci


【解决方案1】:

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

'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'), ],

【讨论】:

【解决方案2】:

我在 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 .

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-06-13
  • 2016-07-03
  • 2023-03-28
  • 2016-09-21
  • 2014-11-29
  • 2021-10-08
  • 2014-05-25
相关资源
最近更新 更多