2015-05-30 15 views
7

Ho un problema molto strano da ieri. L'esecuzione di composer install sul mio server di produzione causa questo errore ... Tenere presente che non ricevo alcun errore sul mio server locale (Homestead VM).Installazione di Composer in arresto anomalo su Laravel 5 (solo produzione)

Nothing to install or update 
Writing lock file 
Generating autoload files 
Executing command (CWD): php artisan clear-compiled 
Executing command (CWD): php artisan optimize 
Generating optimized class loader 
Compiling common classes 
Script php artisan optimize handling the post-install-cmd event returned with an error 



    [RuntimeException] 
    Error Output: 



Exception trace: 
() at phar:///home/site/public_html/composer.phar/src/Composer/EventDispatcher/EventDispatcher.php:177 
Composer\EventDispatcher\EventDispatcher->doDispatch() at phar:///home/site/public_html/composer.phar/src/Composer/EventDispatcher/EventDispatcher.php:91 
Composer\EventDispatcher\EventDispatcher->dispatchScript() at phar:///home/site/public_html/composer.phar/src/Composer/Installer.php:342 
Composer\Installer->run() at phar:///home/site/public_html/composer.phar/src/Composer/Command/InstallCommand.php:131 
Composer\Command\InstallCommand->execute() at phar:///home/site/public_html/composer.phar/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:257 
Symfony\Component\Console\Command\Command->run() at phar:///home/site/public_html/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:874 
Symfony\Component\Console\Application->doRunCommand() at phar:///home/site/public_html/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:195 
Symfony\Component\Console\Application->doRun() at phar:///home/site/public_html/composer.phar/src/Composer/Console/Application.php:146 
Composer\Console\Application->doRun() at phar:///home/site/public_html/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:126 
Symfony\Component\Console\Application->run() at phar:///home/site/public_html/composer.phar/src/Composer/Console/Application.php:83 
Composer\Console\Application->run() at phar:///home/site/public_html/composer.phar/bin/composer:43 
require() at /home/site/public_html/composer.phar:25 


install [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--no-plugins] [--no-custom-installers] [--no-autoloader] [--no-scripts] [--no-progress] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [--ignore-platform-reqs] [packages1] ... [packagesN] 

così sembra l'errore compare nel post-install-cmd quando php artisan optimize è impostato per funzionare ... La cosa strana è che quando ho eseguito tutte le post-install-cmd manualmente, non ottengo alcun errore.

Così ho provato:

  1. facendo un composer selfupdate
  2. Rimozione compositore e ri-installarlo
  3. Utilizzando composer.phar al posto del Global One
  4. facendo composer dumpautoload
  5. rimozione del composer.lock file
  6. rimozione di tutta la cache composer clearcache
  7. l'esecuzione di un composer update, sulla produzione (disperata)

e ancora ottenere lo stesso errore. Hai qualche idea ? Sono a corto di parole chiave per trovare problemi simili online.

Grazie mille

EDIT:

inoltre non è riuscita a detto che il sito sta lavorando bene .. Nessun errore durante la navigazione.

EDIT 2:

Come da @marcanuy suggerimento, ho provato a rimuovere la cartella vendor. Mentre ho cancellato anche la cache compilata e compositore. Il compositore ha scaricato di nuovo/installato tutto. E ancora ottengono lo stesso errore.

EDIT 3:

Così ho ristretto la scelta a questo. NON OTTENGO L'ERRORE SE IMPOSTA APP_DEBUG a vero ... Quando falso, ottengo l'errore. Qualche idea del perché?

montaggio finale:

grazie a Ben Johnson, che mi ha segnalato nella giusta direzione ... ho controllato il mio log di PHP prime, e sì che differiscono dai log laravel (duh, avrebbe dovuto pensarci). Ho visto un errore di memoria strano in là, non legati ai file nello stack errore precedente:

[02-Jun-2015 14:05:01 Europe/Paris] PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 64 bytes) in /vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php on line 169 

Dopo il momento tada. Ho sollevato memory_limit e composer install eseguito senza errori e con APP_DEBUG disattivato.

Grazie mille a tutti per il vostro aiuto.

+0

esegui l'installazione di compositore su un'installazione esistente di laravel? – baao

+0

Sì. Io uso un dploy.io per aggiornare il sito. Così aveva fatto molte distribuzioni di successo prima di ieri (inclusa l'installazione di compositore in esecuzione che viene eseguita dopo ogni distribuzione). – JohnWolf

+0

così il file config/app.php nell'installazione di laravel contiene eventuali fornitori di servizi o facciate aggiunti? questo potrebbe essere responsabile per l'errore – baao

risposta

2

Avete esaminato i log di PHP prime?

È fondamentale notare che i registri di Laravel non contengono tutte le stesse informazioni che i registri degli errori grezzi di PHP fanno. Quando si utilizza Laravel, controllare sempre i log raw di PHP quando si verifica un errore e l'output visibile e il log di Laravel non rivelano la causa principale.

È altrettanto importante notare che Composer è soggetto ai capricci di qualsiasi file PHP che carica ed elabora, il che significa che qualsiasi tipo di errore che potrebbe verificarsi in un file PHP completamente estraneo a Composer è in grado di causando il fallimento di Composer, spesso senza spiegazione. Tuttavia,, la causa principale è quasi sempre evidente nei log raw di PHP.

La firma del metodo vuota nella parte superiore dello stack-trace è inusuale. Sospetto che se controlli i log raw di PHP, troverai alcune condizioni insolite che spiegano completamente la chiusura improvvisa di composer.phar.

Si prega di controllare lì accanto e facci sapere cosa trovi.

0

Il problema è legato alla php artisan optimize e non il composor.phar come si può vedere nel Optimizing the Framework for Better Performance se APP_DEBUG è vero è necessario utilizzare --force opzione con il comando. Quindi, per risolvere questo errore è necessario modificare la vostra linea composor.json in "post-install-cmd" sezione dalla "php artisan optimize" a "php artisan optimize --force"

+0

Grazie Dharmesh ... Ho provato questo, e ancora ottengo l'errore se ho impostato APP_DEBUG su false. E funziona ancora se è vero. 'Script php artisan optimize --force gestisce l'evento post-installazione-cmd restituito con un errore' – JohnWolf

+0

I Ho anche provato a impostare '--env = production' nel caso in cui ... ancora nulla – JohnWolf

+0

Nota: quando eseguo manualmente" php artisan optimize ", funziona – JohnWolf

Problemi correlati