てぃーだブログ › iiiso の海。時々、セントレア。宵のうち、システム開発。 › 【PHP / Symfony2】 › 【PHP】Composer がupdating dependencies あたりでフリーズする

2016年05月10日

【PHP】Composer がupdating dependencies あたりでフリーズする

PHP フレームワーク Symfony2 のプロジェクトを複数作り、Composer コマンドでバンドルをいろいろインストールしてるうちに、Composer が標準出力に updating dependencies を表示したまま、フリーズするようになった。



■ 構築環境
Windows 8.1 (64bit)
PHP 5.6.20 xampp [ xampp-win32-5.6.20-0-VC11.zip / ダウンロード ]
Symfony 2.7.11



■ Composer コマンドでフリーズ
ほんとにフリーズするかどうか、Doctrine でフィクスチャーの読み込みに使うバンドル DoctrineFixturesBundle をインストールして再現してみる。


【PHP】Composer がupdating dependencies あたりでフリーズする



ふつうに composer で Doctrine のフィクスチャーバンドルを require すると、・・・。

C:\symfony > php composer.phar require doctrine/doctrine-fixtures-bundle --dev

  Using version ^2.3 for doctrine/doctrine-fixtures-bundle
  ./composer.json has been updated
  Loading composer repositories with package information
  Updating dependencies (including require-dev) ・・・まいど、ここでフリーズ

composer の処理状況を逐一表示してくれる引数「 -vvv 」をコマンドの末尾に付けて、えいやっ。

C:\symfony > php composer.phar require doctrine/doctrine-fixtures-bundle --dev -vvv

 ・・・
  You are running composer with xdebug enabled. This has a major impact on runtime performance. See https://getcomposer.org/xdebug
  Reading ./composer.json
  Loading config file ./composer.json ・・・ いちおう動いてるみたいなんだけど、・・・。
 ・・・
 ・・・
 Downloading http://packagist.org/p/symfony/security-guard%24f1d727af4489a98b6f4786fb09788ffd9c193490cda4ece2e8812cf97f0297dc.json
  Writing C:/Users/***/AppData/Local/Composer/repo/https---packagist.org/provider-symfony$security-guard.json into cache ・・・ どうやら、コレが原因にゃ。

次なるステップは、・・・コレ。

C:\symfony > php composer.phar diagnose
 ・・・
  Checking git settings: OK
  Checking http connectivity to packagist: OK
  Checking https connectivity to packagist: OK
  Checking github.com rate limit: OK
  Checking disk free space: OK
  Checking pubkeys: FAIL     ・・・問題の個所。公開鍵がFAIL?・・・。
  Missing pubkey for tags verification
  Missing pubkey for dev verification
  Run composer self-update --update-keys to set them up・・・ こうするといいらしい。
  Checking composer version: OK

次のサイトで、「pubkey for dev verification 」 と 「pubkey for tags verification 」の公開鍵(暗号化文字)をゲットしてから、言われた通りにしてみましょう。

[ Composer Public Keys / Signatures ]

C:\symfony > php composer.phar self-update --update-keys
 ・・・
  You are running composer with xdebug enabled. This has a major impact on runtime performance. See https://getcomposer.org/xdebug
  Open https://composer.github.io/pubkeys.html to find the latest keys
  Enter Dev / Snapshot Public Key (including lines with -----): ・・・ ココで、サイトから「pubkey for dev verification 」 の暗号化された文字をコピペ。(--- 線も必要)
 ・・・
 ・・・
  Enter Tags Public Key (including lines with -----):  ・・・ ココで、サイトから「pubkey for tags verification 」 の暗号化された文字をコピペ。(--- 線も必要)
 ・・・
 ・・・
  Public keys stored in C:/Users/***/AppData/Roaming/Composer ・・・ こうなれば成功。

念のため、もう一度実行すると 「Checking pubkeys 」 から OK 出ました。
・・・これで、Composer のフリーズはなくなりました。

いままで普通に動いていたのに突然、このような現象が発生した理由は、いまだにわかっておりません。lol

C:\symfony > php composer.phar self-update --update-keys
 ・・・
  Checking git settings: OK
  Checking http connectivity to packagist: OK
  Checking https connectivity to packagist: OK
  Checking github.com rate limit: OK
  Checking disk free space: OK
  Checking pubkeys:
  Tags Public Key Fingerprint: 57815BA2 7E54DC31 7ECC7CC5 573090D0  87719BA6 8F3BB723 4E5D42D0 84A14642
  Dev Public Key Fingerprint: 4AC45767 E5EC2265 2F0C1167 CBBB8A2B  0C708369 153E328C AD90147D AFE50952
  OK
  Checking composer version: OK

参考にしたサイト
[ Composer freezing when installing symfony vendors ]
[ Missing pubkeys: FAIL after self-update #4839 ]


追記

普段、Eclipse で XDebug を使っていると、php.ini 上で zend_extension と xdebug を使う設定になっており、これがフリーズする(アップデートに長時間かかる)原因となります。
Composer を使うときは、あらかじめ php.ini でデバッガの設定をコメントアウトしておけばフリーズしなくなるかも。



同じカテゴリー(【PHP / Symfony2】)の記事

上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。