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 .maintenance

taba 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_backup

Composerの管理から切り離す

以下コマンドを実行し、プラグインを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:warmup

Composerの管理から切り離したプラグインをアンインストールする方法

以下のコマンドで無効化・アンインストールが可能です。

# 無効化
/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系にプラグインをインストールしなければいけなくなった時の一助になれば幸いです。

投稿者

himecasのアバター

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Table of Contents