更新依赖项时,Composer挂起

时间:2015-09-14 21:04:28

标签: json composer-php hamcrest

我尝试使用composer update

更新我今天正在处理的Laravel项目

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

所以我尝试了更新composer,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" $*

不知道该怎么做......

12 个答案:

答案 0 :(得分:54)

就我而言,在我的8GB ram Mac上花费了很长时间。要检查进度并验证它是否正在解决依赖关系,请在详细模式下运行composer。这是我在问题中错过的一种方法,因此在这里值得重申。

composer update -vvv

答案 1 :(得分:10)

有时它被卡住是因为它试图使用HTTP而不是https,所以只需运行

composer config --global repo.packagist composer https://packagist.org

答案 2 :(得分:8)

首先:检查防火墙和代理连接。如果一切正常但作曲家仍在悬挂,请尝试清除作曲家缓存:

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

答案 3 :(得分:1)

我通过运行命令 NOT IN VS CODE TERMINAL

解决了该问题

答案 4 :(得分:0)

重新启动系统。

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

答案 5 :(得分:0)

检查您是否正在运行所需的最低php版本

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

打开终端运行

php -v

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

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

对我来说,问题出在xDebug。我正在使用IDE的终端,调试器正在侦听传入的连接(一如既往)。关闭监听功能(无需禁用扩展功能)可以解决此问题。

答案 8 :(得分:0)

我通过编辑php.ini文件来解决此问题,以便设置ssl验证所需的默认证书:

  1. 下载文件http://curl.haxx.se/ca/cacert.pem
  2. 编辑php.ini来设置拍子:

    [openssl]
    ; The location of a Certificate Authority (CA) file on the local filesystem
    ; to use when verifying the identity of SSL/TLS peers. Most users should
    ; not specify a value for this directive as PHP will attempt to use the
    ; OS-managed cert stores in its absence. If specified, this value may still
    ; be overridden on a per-stream basis via the "cafile" SSL stream context
    ; option.
    openssl.cafile=C:\web\certs\cacert.pem
    curl.cainfo=C:\web\certs\cacert.pem
    
  3. 再试一次

答案 9 :(得分:0)

我在另一篇文章中发现了这一点,发现执行以下操作很有用。这似乎是composer程序包缓存中的缓存/下载问题。

composer update -vvv

然后执行以下操作: 添加或编辑作曲家文件以具有这些设置。

"repositories": [
    {
         "type": "composer", 
         "url": "https://packagist.org"
    },
    { "packagist": false }
]

答案 10 :(得分:0)

这对我有用:

composer self-update

答案 11 :(得分:-1)

为我工作。 首先运行自动加载命令,然后清除缓存并运行更新。

composer dump-autoload
php artisan cache:clear
php artisan view:clear
update composer