2016-01-08 15 views
8
verarbeitet

Da von 5,1 bis Laravel 5.2 aktualisieren, wenn Handwerker optimize auf CircleCI läuft, PHP läuft 5.6.14, erhalte ichLaravel 5.2 Handwerkers optimize - php_strip_whitespace failed to open stream: Kein Kind

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

Wobei /var/laravel/project/root das Verzeichnis ist, in dem sich composer.json und der Anbieter befinden.

Der Befehl läuft gut auf meinem Dev-Box läuft PHP 5.6.11-1ubuntu3.1. Ich folgte dem offiziellen 5.1 bis 5.2 Upgrade Guide.

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 

Irgendwelche Ideen, wie ich das bitte lösen kann?

+0

Der Fehler erscheint yo, etwas zu tun mit dem Class Loader/Optimierer, die versuchen, eine Klasse/Datei zu laden, die es nicht gibt. Überprüfe deine config/app.php für alle Klassen, die du hinzugefügt hast. Versuchen Sie auch, Composer-Auto-Loads zu entladen. – RCrowt

+0

Wo können Sie es lösen? –

+0

@RCrowt Ich habe versucht, die Standardkonfiguration/app.php von https://raw.githubusercontent.com/laravel/laravel/master/config/app.php, aber kein Glück. Ja, ich habe versucht, Komponist Dump-Autoload, wieder kein Glück. –

Antwort

8

Ich fand die Antwort auf https://laracasts.com/discuss/channels/laravel/laravel-optimize-error wo Johnwheal erwähnt, dass config/compile.php falsch ist.

Es stellt sich heraus, dass die Array-Dateien in config/compile.php in einem im April 2015 begeht geleert wurde, aber ich kann die Änderung des Upgrade Guide erwähnte nicht sehen. Es wurde seither dem Upgrade Guide hinzugefügt.

das Problem entweder beheben:

  • Leeren Sie den Array-Dateien in config/compile.php

oder

  • entfernen BusServiceProvider.php und ConfigServiceProvider.php aus dem Array-Dateien in config/compile.php .
+0

Es gibt bereits eine PR, um dies zu den Dokumenten hinzuzufügen. https://github.com/laravel/docs/pull/2056 –

+0

Ich bestätige, dass dies das Problem behebt –

+0

Leeren Sie das Dateiarray nicht. Entfernen Sie einfach die Zeile mit den beiden fehlenden Providern. – mniess

0

Der Grund für diesen Fehler ist die BusServiceProvider und ConfigServiceProvider entfernt wurden, als Teil des 5,1-5,2-Übergang. Obwohl die Antwort, die zum Entfernen aller kompilierten Klassen bereitgestellt wird, das Problem beheben wird, müssen Sie nur BusServiceProvider und von config/compile.php entfernen.

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

+0

ConfigServiceProvider wurde ebenfalls entfernt. Der Standardwert in Laravel 5.2 ist auch, dass das Dateiarray leer ist. Siehe https://github.com/laravel/laravel/blob/master/config/compile.php. –

+0

@DaveSouthey stimmte überein (aktualisierte Antwort), obwohl Sie immer noch von der Kompilation profitieren können, indem Sie die restlichen Elemente dort behalten :). Laravel hat [update the upgrade docs] (https://laravel.com/docs/5.2/upgrade) und erwähnt jetzt nur das Entfernen der beiden obigen Punkte. – Matt

+0

Wenn dies die empfohlene Lösung ist, warum ist in Laravel 5.2 standardmäßig das Array leer? Siehe http://github.com/laravel/laravel/blob/master/config/compile.php –

Verwandte Themen