Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

My composer won't update completely with Laravel 4 it gets stuck with artisan

Here is the error I am getting:

Script php artisan optimize handling the post-update-cmd event returned with an error

[RuntimeException]  
Error Output:

update [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--lock] [--no-plugins] [--no-custom-installers] [--no-scripts] [--no-progress] [--with-dependencies] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [packages1] ... [packagesN]

This shows after:

Writing lock file
Generating autoload files

I tried to delete all my folders in my vendor folder. But that did not change anything.

I am using MAMP server on my Mac OS X.

PHP Version 5.4.10

mcrypt 2.5.8

I just tried "sudo composer update --verbose" and I got this error:

sudo composer update --verbose
Password:
Loading composer repositories with package information
Updating dependencies (including require-dev)
Generating autoload files
Script php artisan optimize handling the post-update-cmd event returned with an error

  [RuntimeException]  
  Error Output:
    Exception trace:
     () at phar:///usr/bin/composer/src/Composer/EventDispatcher/EventDispatcher.php:148
     Composer\EventDispatcher\EventDispatcher->doDispatch() at phar:///usr/bin/composer/src/Composer/EventDispatcher/EventDispatcher.php:107
 Composer\EventDispatcher\EventDispatcher->dispatchCommandEvent() at phar:///usr/bin/composer/src/Composer/Installer.php:289
 Composer\Installer->run() at phar:///usr/bin/composer/src/Composer/Command/UpdateCommand.php:118
 Composer\Command\UpdateCommand->execute() at phar:///usr/bin/composer/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:244
 Symfony\Component\Console\Command\Command->run() at phar:///usr/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:897
 Symfony\Component\Console\Application->doRunCommand() at phar:///usr/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:191
 Symfony\Component\Console\Application->doRun() at phar:///usr/bin/composer/src/Composer/Console/Application.php:117
 Composer\Console\Application->doRun() at phar:///usr/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:121
 Symfony\Component\Console\Application->run() at phar:///usr/bin/composer/src/Composer/Console/Application.php:83
 Composer\Console\Application->run() at phar:///usr/bin/composer/bin/composer:43
 require() at /usr/bin/composer:15

Here is the error I found in my PHP error logs:

[04-Nov-2013 20:45:44 Europe/Berlin] PHP Fatal error:  Class 'Patchwork\Utf8\Bootup' not found in /Applications/MAMP/htdocs/-----/bootstrap/autoload.php on line 46

I just tried to test my composer:

sudo composer diagnose
Password:
Checking platform settings: OK
Checking http connectivity: OK
Checking composer.json: FAIL
No license specified, it is recommended to do so. For closed-source software you may use "proprietary" as license.
Name "andrew13/Laravel-4-Bootstrap-Starter-Site" does not match the best practice (e.g. lower-cased/with-dashes). We suggest using "andrew13/laravel-4-bootstrap-starter-site" instead. As such you will not be able to submit it to Packagist.
Checking disk free space: OK
Checking composer version: OK

Just applied the recommendation in the error message from the last command. Now everything is showing as OK.

I just tried this:

curl -sS https://getcomposer.org/installer | php -- --check
#!/usr/bin/env php
All settings correct for using Composer

I am now getting new errors in my PHP Error logs:

[05-Nov-2013 05:45:45 Europe/Berlin] PHP Fatal error:  Uncaught exception 'ReflectionException' with message 'Class config does not exist' in /Applications/MAMP/htdocs/---/bootstrap/compiled.php:165
Stack trace:
#0 /Applications/MAMP/htdocs/---/bootstrap/compiled.php(165): ReflectionClass->__construct('config')
#1 /Applications/MAMP/htdocs/---/bootstrap/compiled.php(142): Illuminate\Container\Container->build('config', Array)
#2 /Applications/MAMP/htdocs/---/bootstrap/compiled.php(444): Illuminate\Container\Container->make('config', Array)
#3 /Applications/MAMP/htdocs/---/bootstrap/compiled.php(233): Illuminate\Foundation\Application->make('config')
#4 /Applications/MAMP/htdocs/---/bootstrap/compiled.php(3151): Illuminate\Container\Container->offsetGet('config')
#5 /Applications/MAMP/htdocs/---/bootstrap/compiled.php(103): Illuminate\Exception\ExceptionServiceProvider->Illuminate\Exception\{closure}(Object(Illuminate\Foundation\Application))
#6 /Applications/MAMP/htdocs/---/bootstrap/compiled.php(163): Illuminate\Container\Container->Illum in /Applications/MAMP/htdocs/---/bootstrap/compiled.php on line 165
like image 629
jnbdz Avatar asked Nov 04 '13 18:11

jnbdz


3 Answers

I believe this error results from not being able to find mcrypt.

Script php artisan optimize handling the post-update-cmd event returned with an error

Apparently it is not quite that easy to install mcrypt.

  1. Install the php5-mcrypt package, or verify that it has been installed correctly.

    sudo apt-get install php5-mcrypt
    
  2. Check whether mcrypt has been installed and enabled for PHP:

    php --ri mcrypt
    
  3. You're done if it says:

    mcrypt support => enabled
    

    Otherwise, continue if it says:

    Extension 'mcrypt' not present.
    
  4. Verify that mcrypt.ini is present in PHP's mods-available directory.

    ls /etc/php5/mods-available/mcrypt.ini
    
  5. If it says No such file or directory, create a symbolic link from mcrypt.ini to PHP's mods-available directory.

    sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available
    
  6. Enable the mod.

    sudo php5enmod mcrypt
    
  7. Restart apache.

    sudo service apache2 restart
    
  8. Check again whether mcrypt is enabled.

    php --ri mcrypt
    

The final steps were inspired by Vuk Stanković.

like image 106
Daniel A.A. Pelsmaeker Avatar answered Oct 23 '22 17:10

Daniel A.A. Pelsmaeker


Okay, did some further research with Google and it seems that this has to do with the autoload caching from Composer. There are various ways on how you can solve this.

composer dump-autoload

This would re-create the autoload stuff for you and it should solve your problem for now.

If this doesn't help, try deleting everything and re-install fresh: [ref]

rm -rf /path/to/composer.lock /path/to/vendor/
composer install

This would re-create just about everything.

like image 27
Fleshgrinder Avatar answered Oct 23 '22 19:10

Fleshgrinder


It looks like your laravel install did not run correctly and since part of the composer.json runs the php artisan clear-compiled and php artisan optimize if your laravel application is not working then composer will fail.

Try running your composer update without invoking the Laravel scripts.

php composer update --no-scripts

After that you can either run the commands from the scripts block in your composer.json manually. Else you can just run a standard

php composer update

again which will run the scripts for you.

like image 39
Hailwood Avatar answered Oct 23 '22 19:10

Hailwood