今日取り組んでいる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" $*
_
それについて何をすべきかわからない...
したがって、問題はphpのxdebug
拡張機能にあったことがわかりました。 php.ini
で無効にした後、composer=は問題なく実行されました。
また、キャッシュからファイルを読み取っているときにハングアップは実際には発生していませんでした。それはcomposer=が依存関係を解決しようとしていた直後のステップでした。そのステップを終了せず、出力を印刷しませんでした。キャッシュからのファイル。
最初の:ファイアウォールとプロキシ接続を確認します。すべて問題ないが、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
システムを再起動します。
今日も同じ問題に直面しました。アドバイスに従って、xdebugをオフにしましたが、助けにはなりませんでした。すべてのファイルが存在することを確認しました。システムを再起動しましたが、動作しました。
php.iniの[xdebug] zend_extension = "file/path"のパスを確認します
最低限必要なPHPバージョンを実行しているかどうかを確認します
Composer.jsonファイルで指定された必要なphpバージョンと比較してください
ターミナルランを開く
php -v
Composer.jsonファイルのクロスチェックは、以下の例を参照してください
"require": { "php": "^7.1.3", }