it-roy-ru.com

Мой composer не будет полностью обновляться с 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

макрипт 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 (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

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

Я только что попробовал это:

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
15
jnbdz

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

Скрипт php artisan optimize обрабатывает событие 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 присутствует в каталоге PHP mods-available.

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

    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.

    php --ri mcrypt
    

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

27
Daniel Pelsmaeker

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

composer dump-autoload

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

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

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

Это воссоздает практически все.

8
Fleshgrinder

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

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

php composer update --no-scripts

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

php composer update

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

3
Hailwood

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

Sudo apt-get install php5-mcrypt

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

composer update 
0
BM2ilabs

Другое решение для меня, установка 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
0
X Sham

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

"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 и каталог vendor и выполните команду

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

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

Sudo composer install

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

0
Mohamed Azher