composer installやcomposer updateで「these were not loaded, because they are affected by security advisories」と出て止まるのは、指定したバージョンに既知の脆弱性があり、Composerがそのバージョンを候補から外しているためです。基本の対処は脆弱性の直ったバージョンへ上げることで、どうしても古いバージョンが必要なときだけ、勧告IDを指定して除外します。
実際に出たエラーは次の通りです。Composer 2.10.3で、Carbonを2.62.1に固定しようとしたときのものです。
Problem 1
- Root composer.json requires nesbot/carbon 2.62.1 (exact version match: 2.62.1 or 2.62.1.0), found nesbot/carbon[2.62.1] but these were not loaded, because they are affected by security advisories ("PKSA-csyb-yc4p-mnbs"). Go to https://packagist.org/security-advisories/ to find advisory details. To ignore the advisories, add their IDs to the "policy.advisories.ignore-id" config or add the package to "policy.advisories.ignore". To turn the feature off entirely, you can set "policy.advisories.block" to false.
まず修正済みのバージョンを確認する
エラー文にあるPKSA-で始まるIDが勧告の番号です。Packagistの勧告ページか次のAPIで、どのバージョンが影響を受けるかを確認します。
curl -s "https://packagist.org/api/security-advisories/?packages[]=nesbot/carbon"
今回の勧告はCVE-2025-22145で、影響範囲は<2.72.6|>=3.0.0,<3.8.4でした。composer.jsonの指定を^2.72.6に変えると、エラーは出ずに2.72.6が選ばれました。固定していた理由が「古いPHPで動くから」程度なら、修正版の要件を見て上げられないかを先に確認します。
古いバージョンが必要なときは勧告IDで除外する
検証のために古いバージョンを再現したいなど、上げられない事情があるときは、composer.jsonのconfigにエラー文の勧告IDを書きます。
{
"require": {
"nesbot/carbon": "2.62.1"
},
"config": {
"policy": {
"advisories": {
"ignore-id": ["PKSA-csyb-yc4p-mnbs"]
}
}
}
}
この設定を入れると、Composer 2.10.3では2.62.1が選ばれました。除外は勧告ID単位なので、同じパッケージに新しい勧告が出ればまた止まります。エラー文にある"policy.advisories.block": falseで機能ごと無効にする方法もありますが、他のパッケージの勧告まで見えなくなるため、IDを指定する方法を使ってください。
EC-CUBEに関するお問い合わせ
[重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。