Мой композитор не будет полностью обновлять Laravel 4, он застрял с мастером

Вот ошибка, которую я получаю:

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] 

Это показывает:

 Writing lock file Generating autoload files 

Я попытался удалить все папки в папке поставщика. Но это ничего не изменило.

Я использую сервер MAMP на своей Mac OS X.

Версия PHP 5.4.10

mcrypt 2.5.8

Я просто попробовал «sudo composer update –verbose», и я получил эту ошибку:

 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 

Вот ошибка, которую я обнаружил в своих журналах ошибок PHP:

 [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 

Я просто попытался проверить моего композитора:

 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 (eg 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 

Просто применил рекомендацию в сообщении об ошибке из последней команды. Теперь все отображается как ОК.

Я просто попробовал это:

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

Теперь я получаю новые ошибки в своих журналах ошибок PHP:

 [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 

Я считаю, что эта ошибка возникает из-за невозможности найти mcrypt .

Script php artisan оптимизирует обработку события post-update-cmd с ошибкой

По-видимому, не так уж просто установить mcrypt .

  1. Установите пакет php5-mcrypt или убедитесь, что он установлен правильно.

     sudo apt-get install php5-mcrypt 
  2. Проверьте, был ли установлен mcrypt и включен ли он для PHP:

     php --ri mcrypt 
  3. Вы закончили, если он говорит:

     mcrypt support => enabled 

    В противном случае продолжайте, если он скажет:

     Extension 'mcrypt' not present. 
  4. Убедитесь, что mcrypt.ini присутствует в каталоге mods-available .

     ls /etc/php5/mods-available/mcrypt.ini 
  5. Если он говорит « No such file or directory , создайте символическую ссылку из mcrypt.ini в каталог mods-available PHP.

     sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available 
  6. Включить мод.

     sudo php5enmod mcrypt 
  7. Перезапустите apache.

     sudo service apache2 restart 
  8. mcrypt раз mcrypt , включен ли mcrypt .

     php --ri mcrypt 

Последние шаги были вдохновлены Вуком Станковичем .

Хорошо, сделал некоторые дальнейшие исследования с Google, и похоже, что это связано с кэшированием автозагрузки из Composer. Существуют различные способы решения этой проблемы.

 composer dump-autoload 

Это заново создало бы материал автозагрузки для вас, и на данный момент оно должно решить вашу проблему.

Если это не поможет, попробуйте удалить все и снова установить свежие: [ref]

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

Это воссоздало бы почти все.

Похоже, что ваша установка laravel не работает корректно, и поскольку часть composer.json запускает очищенный компилятор php artisan optimize artistan и php artisan optimize если ваше приложение laravel не работает, то композитор потерпит неудачу.

Попробуйте запустить обновление вашего композитора без вызова сценариев Laravel.

 php composer update --no-scripts 

После этого вы можете запускать команды из блока сценариев в вашем composer.json вручную. Кроме того, вы можете просто запустить стандартный

 php composer update 

снова, который будет запускать скрипты для вас.

Чтобы исправить это, вам нужно установить mcrypt .
В ubuntu выполните следующую команду:

 sudo apt-get install php5-mcrypt 

Затем обновите композитор:

 composer update 

Другое решение для меня, устанавливающее xdebug.scream = 1 дает проблему:

1) Найдите файл конфигурации xdebug.

 $ sudo find / -name xdebug.ini 

2) Редактировать файл с помощью любого текстового редактора.

 $ sudo vi /your_path/xdebug.ini 

3) Установите xdebug.scream = 0

4) Перезагрузка сервера

 $ sudo service apache2 reload 

У меня была аналогичная проблема при попытке запустить обновление композитора, и ни одно из вышеперечисленных решений не работало. Оказывается, у меня было 2 раздела в моем composer.json, что на самом деле неправильно.

 "require": { "laravel/framework": "4.1.*" }, "config": { "preferred-install": "dist" }, "minimum-stability": "stable", "require": { "barryvdh/laravel-ide-helper": "1.*", "zizaco/confide": "3.2.x", "laravelbook/ardent": "dev-master", "zizaco/entrust": "dev-master" }, "require-dev": { "way/generators": "2.*", "fzaninotto/faker": "1.3.*@dev" } 

Объединение двух, как показано ниже, решило мою проблему.

 "require": { "laravel/framework": "4.1.*", "barryvdh/laravel-ide-helper": "1.*", "zizaco/confide": "3.2.x", "laravelbook/ardent": "dev-master", "zizaco/entrust": "dev-master" }, 

Если у вас все еще есть проблемы, попробуйте удалить каталог composer.lock и каталог поставщика и запустить

 mv ~/.composer/cache ~/.composer/cache.bak 

Очистить кеш композитора и, наконец, запустить

 sudo composer install 

Это должно решить проблему.