2016-01-08 23 views
8

Dal momento che l'aggiornamento a laravel 5.2 da 5.1, durante l'esecuzione di artigianale ottimizzare su CircleCI, in esecuzione PHP 5.6.14, io sono semprelaravel 5.2 artigianale ottimizzare - php_strip_whitespace riuscito ad aprire flusso: Nessun bambino elabora

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

Dove /var/laravel/project/root è la directory in cui risiedono composer.json e il fornitore.

Il comando viene eseguito correttamente sulla mia finestra di sviluppo con PHP 5.6.11-1ubuntu3.1. Ho seguito la guida di aggiornamento da 5.1 a 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 

Qualche idea su come posso risolvere questo per favore?

+0

L'errore viene visualizzato yo essere qualcosa a che fare con la classe Loader/ottimizzatore cercando di caricare una classe/lima che non esiste. Prova a controllare la tua config/app.php per qualsiasi classe che potresti aver aggiunto. Prova anche a scaricare automaticamente il compositore. – RCrowt

+0

Dove è possibile risolverlo? –

+0

@RCrowt Ho provato a utilizzare la config/app.php di default da https://raw.githubusercontent.com/laravel/laravel/master/config/app.php ma senza fortuna. Sì, ho provato il compositore dump-autoload, ancora senza fortuna. –

risposta

8

Ho trovato la risposta su https://laracasts.com/discuss/channels/laravel/laravel-optimize-error dove johnwheal menziona che config/compile.php è errato.

Si scopre che la matrice dei file in config/compile.php è stata svuotata in un commit in aprile 2015 ma non riesco a vedere il cambiamento citato nella Guida aggiornamento . Da allora è stato aggiunto alla Guida all'aggiornamento .

per risolvere il problema sia:

  • vuoto la matrice dei file in config/compile.php

o

  • Rimuovere BusServiceProvider.php e ConfigServiceProvider.php dalla matrice file in config/compile.php .
+0

C'è già un PR per aggiungerlo ai documenti. https://github.com/laravel/docs/pull/2056 –

+0

Confermo che questo risolve il problema –

+0

Non svuotare l'array di file. Basta rimuovere la linea con i due provider mancanti. – mniess

0

La ragione di questo errore è il BusServiceProvider e ConfigServiceProvider sono stati rimossi, come parte della transizione 5.1 a 5.2 allegate. Sebbene la risposta fornita per rimuovere tutte le classi compilate risolverà il problema, le uniche due che è necessario rimuovere sono BusServiceProvider e ConfigServiceProvider da config/compile.php.

'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

Anche ConfigServiceProvider è stato rimosso. Anche il valore predefinito in Laravel 5.2 è di avere l'array di file vuoto. Vedi https://github.com/laravel/laravel/blob/master/config/compile.php. –

+0

@DaveSouthey ha accettato (risposta aggiornata), sebbene sia ancora possibile trarre vantaggio dalla compilazione mantenendo gli elementi rimanenti in là :). Laravel ha [ha aggiornato i documenti di aggiornamento] (https://laravel.com/docs/5.2/upgrade) e ora menziona solo la rimozione dei due elementi sopra. – Matt

+0

se questa è la soluzione consigliata perché il valore predefinito in Laravel 5.2 è l'array vuoto? Vedi http://github.com/laravel/laravel/blob/master/config/compile.php –