web-dev-qa-db-ja.com

Composer依存関係の更新中にハングする

今日取り組んでいるLaravelプロジェクトを_composer update_を使用して更新しようとしました

しかし、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"
}
_

更新

「mockery/mockery」パッケージなど、composer.jsonからいくつかのパッケージを削除しようとしました。行った唯一の変更は、Composerが別のファイルでハングすることでした。

Composerをそのように長時間実行したままにすると、次のようなエラーで最終的に終了しました。

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

それについて何をすべきかわからない...

17
Chris

したがって、問題はphpのxdebug拡張機能にあったことがわかりました。 php.iniで無効にした後、composer=は問題なく実行されました。

また、キャッシュからファイルを読み取っているときにハングアップは実際には発生していませんでした。それはcomposer=が依存関係を解決しようとしていた直後のステップでした。そのステップを終了せず、出力を印刷しませんでした。キャッシュからのファイル。

21
Chris

最初の:ファイアウォールとプロキシ接続を確認します。すべて問題ないが、composerがまだハングしている場合は、composerキャッシュをクリアしてください:

composer clear-cache

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

2番目のオプションこれらの手順でcomposerが修復されない場合、システムに十分なRAMメモリーがない可能性があります(私はこの問題に直面し、症状はあなたが説明したものと同じでした)。この時点で、2つのオプションがあります。

a)メモリを増やす(仮想マシンまたはDocker):コンテナまたはVMには、より多くの使用可能なメモリが必要です。このガイドに従ってください: https://stackoverflow.com/a/44533437/351805

b)スワップファイルの生成(Linux):より多くのメモリを提供するためにスワップファイルを作成してみてください:(上記のコマンドは composer killed kill during update)

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
13
manuelbcd

システムを再起動します。

今日も同じ問題に直面しました。アドバイスに従って、xdebugをオフにしましたが、助けにはなりませんでした。すべてのファイルが存在することを確認しました。システムを再起動しましたが、動作しました。

1
Abhinav

php.iniの[xdebug] zend_extension = "file/path"のパスを確認します

0

最低限必要なPHPバージョンを実行しているかどうかを確認します

Composer.jsonファイルで指定された必要なphpバージョンと比較してください

ターミナルランを開く

php -v

Composer.jsonファイルのクロスチェックは、以下の例を参照してください

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

0
Gpak