Composer在更新依赖项时挂起

问题描述 投票:18回答:6

我尝试使用composer update更新我正在处理的Laravel项目>

但是它挂在Updating dependencies (including require-dev)

所以我尝试了诸如更新作曲家,dump-autoload之类的事情,但是似乎没有任何效果。然后我以详细模式运行它:composer update -vvv

而且我在阅读此json时注意到它挂了:

Reading path/to/Composer/repo/https---packagist.org/provider-cordoval$hamcrest-php.json from cache

我尝试在packagist.org上搜索cordoval / hamcrest-php,但找不到它。在我的composer.json]中未将其列为依赖项

在我的供应商文件夹中搜索,我注意到我使用的mockery/mockery包需要hamcrest/hamcrest-php,但找不到任何与cordoval相关的内容。

任何想法都出了什么问题以及如何修复它以便可以进行更新?

这是我的composer.json:

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "require": {
        "laravel/framework": "4.2.*",
        "iron-io/iron_mq": "dev-master",
        "phpunit/phpunit": "4.2.*",
        "mockery/mockery": "dev-master",
        "xethron/migrations-generator": "dev-master",
        "mailgun/mailgun-php": "dev-master"
    },
    "autoload": {
        "classmap": [
            "app/commands",
            "app/controllers",
            "app/models",
            "app/database/migrations",
            "app/database/seeds",
            "app/tests/TestCase.php"
        ]
    },
    "scripts": {
        "post-install-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ]
    },
    "config": {
        "preferred-install": "dist"
    },
    "minimum-stability": "stable"
}

更新

我已经尝试从composer.json中删除一些软件包,包括“ mockery / mockery”软件包。所做的唯一更改是Composer会挂在另一个文件上。

在使Composer像这样长时间运行后,它最终退出并出现如下错误:

/path/to/ComposerSetup/bin/composer: line 18:  1356 Segmentation fault      php "${dir}/composer.phar" $*

不确定如何处理...

<<

因此原来问题出在php的xdebug扩展名。在我的php.ini中将其禁用后,作曲家运行起来没有任何问题。
并且要注意,从高速缓存中读取文件时实际上并没有发生挂断。这是作曲家试图解决依赖关系之后的一步。它只是从未完成该步骤,也从未打印输出。这就是为什么不管我做什么,它总是卡在从缓存中读取文件的原因。

第1个:检查防火墙和代理连接。如果一切正常,但composer仍然挂起,请尝试清除composer缓存:

composer clear-cache

https://getcomposer.org/doc/03-cli.md#clear-cache

[第二个选项如果这些步骤不能修复您的作曲家,则系统可能没有足够的可用RAM内存(我遇到了这个问题,症状与您描述的相同)。此时,您有两个选择:

a)增加内存(虚拟机或Docker):

您的容器或VM需要更多可用内存。请遵循以下指南:https://stackoverflow.com/a/44533437/3518053

b)生成交换文件(Linux):尝试创建交换文件以提供更多内存:(以上命令来自composer killed while updating

free -m mkdir -p /var/_swap_ cd /var/_swap_ #Here, 1M * 2000 ~= 2GB of swap memory dd if=/dev/zero of=swapfile bs=1M count=2000 mkswap swapfile swapon swapfile chmod 600 swapfile echo "/var/_swap_/swapfile none swap sw 0 0" >> /etc/fstab #cat /proc/meminfo free -m

重新启动系统。
我今天遇到了同样的问题。根据建议,关闭了xdebug,但没有帮助。验证所有文件都存在。重新启动我的系统,它正常工作。

检查您是否正在运行所需的最低PHP版本
与composer.json文件中指定的所需php版本进行比较

打开终端运行

php -v

交叉检查composer.json文件,请参见下面的示例

"require": { "php": "^7.1.3", }

检查php.ini中[xdebug] zend_extension =“文件/路径”的路径

为我工作。首先运行自动加载命令,然后清除缓存并运行更新。
composer dump-autoload php artisan cache:clear php artisan view:clear composer update
json composer-php hamcrest
6个回答
22
投票
并且要注意,从高速缓存中读取文件时实际上并没有发生挂断。这是作曲家试图解决依赖关系之后的一步。它只是从未完成该步骤,也从未打印输出。这就是为什么不管我做什么,它总是卡在从缓存中读取文件的原因。

13
投票
第1个:检查防火墙和代理连接。如果一切正常,但composer仍然挂起,请尝试清除composer缓存:

composer clear-cache


1
投票
我今天遇到了同样的问题。根据建议,关闭了xdebug,但没有帮助。验证所有文件都存在。重新启动我的系统,它正常工作。

0
投票
与composer.json文件中指定的所需php版本进行比较

打开终端运行


0
投票

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.