我的作曲家不会完全更新Laravel 4它会被工匠困住

jnb*_*bdz 15 php laravel composer-php 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]
Run Code Online (Sandbox Code Playgroud)

这显示在:

Writing lock file
Generating autoload files
Run Code Online (Sandbox Code Playgroud)

我试图删除我的供应商文件夹中的所有文件夹.但这并没有改变任何事情.

我在Mac OS X上使用MAMP服务器.

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
Run Code Online (Sandbox Code Playgroud)

这是我在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
Run Code Online (Sandbox Code Playgroud)

我只是试着测试我的作曲家:

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
Run Code Online (Sandbox Code Playgroud)

刚才在最后一个命令的错误消息中应用了建议.现在一切都显示为OK.

我刚试过这个:

curl -sS https://getcomposer.org/installer | php -- --check
#!/usr/bin/env php
All settings correct for using Composer
Run Code Online (Sandbox Code Playgroud)

我现在在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
Run Code Online (Sandbox Code Playgroud)

Dan*_*ker 27

我相信这个错误是因为无法找到mcrypt.

脚本php artisan优化处理带有错误返回的post-update-cmd事件

显然它安装起来并不那么容易mcrypt.

  1. 安装php5-mcrypt软件包,或验证它是否已正确安装.

    sudo apt-get install php5-mcrypt
    
    Run Code Online (Sandbox Code Playgroud)
  2. 检查是否mcrypt已安装并启用PHP:

    php --ri mcrypt
    
    Run Code Online (Sandbox Code Playgroud)
  3. 如果它说:

    mcrypt support => enabled
    
    Run Code Online (Sandbox Code Playgroud)

    否则,如果它说:

    Extension 'mcrypt' not present.
    
    Run Code Online (Sandbox Code Playgroud)
  4. 验证mcrypt.iniPHP mods-available目录中是否存在.

    ls /etc/php5/mods-available/mcrypt.ini
    
    Run Code Online (Sandbox Code Playgroud)
  5. 如果它说No such file or directory,创建从mcrypt.iniPHP mods-available目录的符号链接.

    sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available
    
    Run Code Online (Sandbox Code Playgroud)
  6. 启用mod.

    sudo php5enmod mcrypt
    
    Run Code Online (Sandbox Code Playgroud)
  7. 重启apache.

    sudo service apache2 restart
    
    Run Code Online (Sandbox Code Playgroud)
  8. 再次检查是否mcrypt已启用.

    php --ri mcrypt
    
    Run Code Online (Sandbox Code Playgroud)

最后的步骤受到了VukStanković的启发.

  • Mcrypt已经在我的系统上了,作曲家已经工作了一段时间,直到我收到这个错误 (4认同)
  • `sudo php5enmod mcrypt`解决了这个问题. (4认同)

Fle*_*der 8

好的,与Google进行了一些进一步的研究,似乎这与Composer的自动加载缓存有关.有多种方法可以解决这个问题.

composer dump-autoload
Run Code Online (Sandbox Code Playgroud)

这将为您重新创建自动加载的东西,它现在应该解决您的问题.

如果这没有帮助,请尝试删除所有内容并重新安装新的:[参考]

rm -rf /path/to/composer.lock /path/to/vendor/
composer install
Run Code Online (Sandbox Code Playgroud)

这将重新创造几乎所有东西.