経緯
開発環境を新しくして、 PHP のバージョンを上げたりなんだりして、既存プロジェクトを使用しようとしたところ、
> composer require
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Root composer.json requires SOME-REPOSITORY/SOME-PACKAGE XX.XX.XX (exact version match: XX.XX.XX or XX.XX.XX), found SOME-REPOSITORY/SOME-PACKAGE[XX.XX.XX] but these were not loaded, because they are affected by security advisories ("PKSA-ABCD-1234-568"). Go to https://packagist.org/security-advisories/ to find advisory details. To ignore the advisories, add them to the audit "ignore" config. To turn the feature off entirely, you can set "block-insecure" to false in your "audit" config.
というエラーが表示されてパッケージインストールが止まってしまいました。
原因
メッセージで書かれている通りですが、パッケージを古いバージョンのまま放置していたせいで脆弱性があってセキュリティ上危険だ、という警告ですね。
対処
一応それでも無視して composer require --no-audit しようとしましたが変わらず。
composer require --no-audit --no-block-insecure まで付けてあげるとパッケージのインストールは進みました。
が、経緯で記した通り、今度は単純に PHP のバージョンとパッケージのバージョンが合わなくて普通に動かなかったので、パッケージガーデニングをして動くところまで持って行きました。
そもそもとして脆弱性があるとわざわざ親切に警告しているので、それを無視して使うのも後に尾を引きますし……ということで正攻法になりました。
参考
- 今こそ徹底入門!Composerのコンフリクト
- こちらはコンフリクトが起きているケースなので今回のケースとは違いますが、似たようなエラーが出ているという意味では参考に。