15

这是我得到的错误:

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

我试图删除我的供应商文件夹中的所有文件夹。但这并没有改变什么。

我在我的 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

这是我在 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
4

6 回答 6

27

我相信这个错误是由于找不到mcrypt.

脚本 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是否存在于 PHP 的mods-available目录中。

    ls /etc/php5/mods-available/mcrypt.ini
    
  5. 如果显示No such file or directory,则创建一个指向mcrypt.iniPHPmods-available目录的符号链接。

    sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available
    
  6. 启用模组。

    sudo php5enmod mcrypt
    
  7. 重启阿帕奇。

    sudo service apache2 restart
    
  8. 再次检查是否mcrypt启用。

    php --ri mcrypt
    

最后的步骤受到Vuk Stanković的启发。

于 2014-02-14T02:10:52.447 回答
9

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

composer dump-autoload

这将为您重新创建自动加载内容,它现在应该可以解决您的问题。

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

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

这将重新创建几乎所有内容。

于 2013-11-04T21:54:28.433 回答
3

看起来您的 laravel 安装没有正确运行,并且由于部分composer.json运行php artisan clear-compiledphp artisan optimize如果您的 laravel 应用程序不工作,那么 composer 将失败。

尝试在不调用 Laravel 脚本的情况下运行您的作曲家更新。

php composer update --no-scripts

之后,您可以手动运行 composer.json 中脚本块中的命令。否则你可以运行一个标准

php composer update

再次将为您运行脚本。

于 2013-11-06T03:47:21.593 回答
0

要解决此问题,您需要安装mcrypt.
在 ubuntu 中执行以下命令:

sudo apt-get install php5-mcrypt

然后更新作曲家:

composer update 
于 2013-12-19T08:59:11.247 回答
0

对我来说,另一种解决方案是设置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
于 2014-04-18T07:49:29.900 回答
0

我在尝试运行 composer update 时遇到了类似的问题,但上述解决方案都没有奏效。事实证明,我的 composer.json 中有 2 个 require 部分,这实际上是错误的。

"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

这应该可以解决问题。

于 2014-06-29T11:26:19.477 回答