EC-CUBE4.0系で採用されているComposer v1のサポートが終了し、2025年8月1日よりメタデータへのアクセスができなくなっています。メタデータの廃止により、EC-CUBE4.0系でのプラグインのインストールや有効化、アップデートなどができない状況です。
根本的な対策としてはEC-CUBE4.1以上へのアップデートを推奨するということですが、EC-CUBE本体って気軽にアップデートできないことが多いですよね…
回避策は、開発者向けドキュメントの「EC-CUBE4.0系(Composer v1)利用時の注意点」で解説されています。基本的にはこの方法でインストール・有効化はできるはずです。
ただ、私が対応したEC-CUBE4.0.3の環境では、上記で解説されている方法だけではインストールできませんでした。微妙に手順が異なるため、実際に行った対処法を備忘録として残しておきたいと思います。
今回の環境とインストールしたプラグイン
環境
以下の環境で実施した内容をご紹介しています。特にコマンドのPHP実行ファイルのパスはサーバーによって異なると思いますので、環境に合わせて読み替えてくださいませ。
- EC-CUBE4.0.3
- PHP7.3
- エックスサーバー
インストールしたプラグイン
下記2点をインストールしました。それぞれの手順を後述します。
プラグインコードの確認方法
今回プラグインはコマンドでインストール・有効化します。コマンドでインストールする場合はプラグインコードを知る必要があります。
オーナーズストアのプラグインでしたら、ストアで購入しておけばプラグイン一覧にコードが表示されるので確認できます。

独自プラグインの場合は、ファイルがZIPなどで配布されるので、中にあるcomposer.jsonの”code”を確認します。
"extra": { "code": "SalesReport4", "id": 1759 }アカウントロックプラグインをインストールする手順
composer.jsonの編集
EC-CUBEをインストールしているルートディレクトリにあるcomposer.jsonを編集します。
まず、require-devセクションをまるっと削除します。
"require-dev": {
"bheller/images-generator": "^1.0",
"captbaritone/mailcatcher-codeception-module": "^1.2",
"codeception/codeception": "~2.4.5",
"dama/doctrine-test-bundle": "^5.0",
"fzaninotto/faker": "^1.7",
"mikey179/vfsstream": "^1.6",
"phpstan/phpstan": "^0.12",
"phpunit/phpunit": "^6.5",
"symfony/browser-kit": "^3.4",
"symfony/phpunit-bridge": "^3.4"
},続いて、repositoriesセクションに”// ここから”~”// ここまで”の内容を追記します。
※”// ここから”と”// ここまで”の文字は不要です。
"repositories": {
"eccube": {
"type": "composer",
"url": "https://package-api.ec-cube.net",
"options": {
"http": {
"header": [
"X-ECCUBE-KEY: <認証キーの文字列>"
]
}
}
}
// ここから
,
"packagist.org": false,
"eccube/plugin-installer": {
"type": "vcs",
"url": "https://github.com/EC-CUBE/eccube-plugin-installer",
"no-api": true
}
// ここまで
}サーバーにSSHで接続してインストールの準備
サーバーにSSHで接続して、以下コマンドを実行します。コマンドは1行ずつ実行してください。
cd /path/to/EC-CUBEのインストールディレクトリ
touch .maintenance
curl -O https://getcomposer.org/download/1.10.27/composer.phar
mv composer.phar composer
/usr/bin/php7.3 composer install --no-scripts --no-pluginsできればメンテナンスモードにした方が安全ですが、どうしてもメンテナンスモードにしたくない場合は”touch .maintenance”は飛ばします。
プラグインの取得
以下コマンドを実行してプラグインを取得します。”AccountLock40″のところはプラグインコードです。
/usr/bin/php7.3 bin/console eccube:composer:require ec-cube/AccountLock40プラグイン側のcomposer.jsonを編集
※この手順は本来であれば不要なはずです。ですが、私の環境ではプラグイン側のrequireセクションを削除しておかないとエラーが出てインストールできませんでした。
/app/Plugin/AccountLock40にあるcomposer.jsonから、requireセクションを削除します。
{
"name": "ec-cube/accountlock40",
"version": "1.0.0",
"description": "account-lock-plugin",
"type": "eccube-plugin",
// ここから削除
"require": {
"ec-cube/plugin-installer": "~0.0.6 || ^2.0"
},
// ここまで削除
"extra": {
"code": "AccountLock40",
"id": 3177
}
}プラグインのインストール実行
以下コマンドを実行してプラグインをインストールします。
/usr/bin/php7.3 bin/console eccube:plugin:install --code AccountLock40キャッシュの再生成
キャッシュを削除してから再生成します。
/usr/bin/php7.3 bin/console cache:clear --no-warmup
/usr/bin/php7.3 bin/console cache:warmupプラグインの有効化
以下コマンドを実行してプラグインを有効化します。
/usr/bin/php7.3 bin/console eccube:plugin:enable --code AccountLock40キャッシュの再生成
再度キャッシュの再生成を実施します。
/usr/bin/php7.3 bin/console cache:clear --no-warmup
/usr/bin/php7.3 bin/console cache:warmupメンテナンスモードの終了
最後にメンテナンスモードを終了したら完了です。
rm .maintenancetaba secure 2段階認証 プラグインをインストールする手順
composer.jsonの編集
EC-CUBEをインストールしているルートディレクトリにあるcomposer.jsonを編集します。
まず、require-devセクションをまるっと削除します。ここは先程と同じです。
"require-dev": {
"bheller/images-generator": "^1.0",
"captbaritone/mailcatcher-codeception-module": "^1.2",
"codeception/codeception": "~2.4.5",
"dama/doctrine-test-bundle": "^5.0",
"fzaninotto/faker": "^1.7",
"mikey179/vfsstream": "^1.6",
"phpstan/phpstan": "^0.12",
"phpunit/phpunit": "^6.5",
"symfony/browser-kit": "^3.4",
"symfony/phpunit-bridge": "^3.4"
},続いて、repositoriesセクションに”// ここから”~”// ここまで”の内容を追記します。依存パッケージがあるのでアカウントロックプラグインの時とは内容が異なります。
※”// ここから”と”// ここまで”の文字は不要です。
"repositories": {
"eccube": {
"type": "composer",
"url": "https://package-api.ec-cube.net",
"options": {
"http": {
"header": [
"X-ECCUBE-KEY: TT1Va3fKeM46lIl5ei6oeV4JPksUTIXO12hR7IuZ"
]
}
}
}
// ここから
,
"packagist.org": false,
"eccube/plugin-installer": {
"type": "vcs",
"url": "https://github.com/EC-CUBE/eccube-plugin-installer",
"no-api": true
},
"robthree/twofactorauth": {
"type": "vcs",
"url": "https://github.com/RobThree/TwoFactorAuth",
"no-api": true
}
// ここまで
}requireセクションに以下を追記します。
"robthree/twofactorauth": "^1.8",requireセクションへの追加はしなくてもインストール自体はできます。しかし、新しいバージョンのパッケージがインストールされてしまうので、2段階認証を設定しようとするとエラーになってしまいます。
その場合は、依存パッケージだけを再インストールします。
ルートディレクトリのcomposer.jsonのrequireセクションに以下を追記します。プラグインインストール後だと”ec-cube/Taba2FA”というのが追加されているので、その下に追記するとわかりやすいです。
"robthree/twofactorauth": "^1.8",以下のコマンドでパッケージを再インストールできます。これで対応したバージョンがインストールされます。
/usr/bin/php7.3 composer update robthree/twofactorauth --with-dependencies --no-scripts --no-pluginsサーバーにSSHで接続してインストールの準備
サーバーにSSHで接続して、以下コマンドを実行します。
cd /path/to/EC-CUBEのインストールディレクトリ
touch .maintenance
curl -O https://getcomposer.org/download/1.10.27/composer.phar
mv composer.phar composer
/usr/bin/php7.3 composer install --no-scripts --no-pluginsプラグインの取得
以下コマンドを実行してプラグインを取得します。”Taba2FA”のところはプラグインコードです。
/usr/bin/php7.3 bin/console eccube:composer:require ec-cube/Taba2FAプラグイン側のcomposer.jsonを編集
※この手順は本来であれば不要なはずです。ですが、私の環境ではプラグイン側のrequireセクションを削除しておかないとエラーが出てインストールできませんでした。
/app/Plugin/Taba2FAにあるcomposer.jsonから、requireセクションを削除します。
{
"name": "ec-cube\/Taba2FA",
"version": "1.0.2",
"description": "taba app 2\u6bb5\u968e\u8a8d\u8a3c\u30d7\u30e9\u30b0\u30a4\u30f3",
"type": "eccube-plugin",
// ここから削除
"require": {
"ec-cube\/plugin-installer": "~0.0.3",
"RobThree\/TwoFactorAuth": "*"
},
// ここまで削除
"extra": {
"code": "Taba2FA",
"id": 1750
}
}プラグインのインストール実行
以下コマンドを実行してプラグインをインストールします。
/usr/bin/php7.3 bin/console eccube:plugin:install --code Taba2FAキャッシュの再生成
キャッシュを削除してから再生成します。
/usr/bin/php7.3 bin/console cache:clear --no-warmup
/usr/bin/php7.3 bin/console cache:warmupプラグインの有効化
以下コマンドを実行してプラグインを有効化します。
/usr/bin/php7.3 bin/console eccube:plugin:enable --code Taba2FAキャッシュの再生成
再度キャッシュの再生成を実施します。
/usr/bin/php7.3 bin/console cache:clear --no-warmup
/usr/bin/php7.3 bin/console cache:warmupメンテナンスモードの終了
最後にメンテナンスモードを終了したら完了です。
rm .maintenanceどうしてもインストールできない場合の対処法
どうしてもインストールに失敗してしまう場合は、Composerの管理から切り離すことで無理やりインストールは可能です。推奨される方法ではないので、最後の手段だと思ってください。
※アカウントロックプラグインを例に解説します。
プラグインファイルを取得
以下コマンドを実行し、プラグインのファイルを取得します。
/usr/bin/php7.3 bin/console eccube:composer:require ec-cube/AccountLock40プラグインファイルをバックアップ
プラグインのファイルをコピーしておきます。
cp -r app/Plugin/AccountLock40 /tmp/AccountLock40_backupComposerの管理から切り離す
以下コマンドを実行し、プラグインをComposerの管理から切り離します。
/usr/bin/php7.3 bin/console eccube:composer:remove ec-cube/AccountLock40プラグインファイルを復元
コピーしておいたプラグインファイルを復元します。
cp -r /tmp/AccountLock40_backup app/Plugin/AccountLock40キャッシュの再生成
キャッシュの再生成を実施します。
/usr/bin/php7.3 bin/console cache:clear --no-warmup
/usr/bin/php7.3 bin/console cache:warmupインストールと有効化
インストールと有効化を実施します。
/usr/bin/php7.3 bin/console eccube:plugin:install --code AccountLock40
/usr/bin/php7.3 bin/console cache:clear --no-warmup
/usr/bin/php7.3 bin/console cache:warmup
/usr/bin/php7.3 bin/console eccube:plugin:enable --code AccountLock40
/usr/bin/php7.3 bin/console cache:clear --no-warmup
/usr/bin/php7.3 bin/console cache:warmupComposerの管理から切り離したプラグインをアンインストールする方法
以下のコマンドで無効化・アンインストールが可能です。
# 無効化
/usr/bin/php7.3 bin/console eccube:plugin:disable --code AccountLock40
/usr/bin/php7.3 bin/console cache:clear --no-warmup
/usr/bin/php7.3 bin/console cache:warmup
# アンインストール(ファイルは残す場合)
/usr/bin/php7.3 bin/console eccube:plugin:uninstall --code AccountLock40
# アンインストール(ファイルも削除する場合)
/usr/bin/php7.3 bin/console eccube:plugin:uninstall --code AccountLock40 --uninstall-force=trueあとがき
通常は管理画面上でインストールや有効化できるので、かなり手順が複雑になってしまいますね。
やんごとなき理由でEC-CUBE4.0系にプラグインをインストールしなければいけなくなった時の一助になれば幸いです。



コメントを残す