【ECCUBE4】プラグインを使用して本体のアップデートを行う【エラーにも対応】

青マグロ

ECCUBEのアップデートはディレクトリを削除してアップするケースと上書きアップしないといけないケースがあったり色々めんどくさい
そこでアップデートをするためのプラグインが公式から配布されていたので使ってみる

プラグインを検索

  • 「プラグインを探す」で「アップデート」で検索してみる

  • すると、各バージョンのアップデートプラグインが出てくる

今回はこれを使ってアップデートしてみる

プラグイン実行

手順は他のプラグインと同様

  1. 現在のバージョンから次のバージョンに移行するプラグインを入手
  2. 有効化
  3. 設定アイコンをクリックしてアップデートに進む

これは共通の注意事項だけど、バージョンアップは飛ばさずに1つずつ行う

例えばv4.0.3からv4.0.6にしたい場合は下記のように地道に...

  • 4.0.3 → 4.0.4
  • 4.0.4 → 4.0.5
  • 4.0.5 → 4.0.6

エラーが発生するケースがある

  • 実際に使ってみると、
    アップデートの途中や完了後に下記のようなエラーが出るケースがある...
Warning: include(/home/XXX/public_html/vendor/composer/../../app/proxy/entity/src/Eccube/Entity/Order.php): failed to open stream: No such file or directory in /home/XXX/public_html/vendor/composer/ClassLoader.php on line 444

Warning: include(): Failed opening '/home/XXX/public_html/vendor/composer/../../app/proxy/entity/src/Eccube/Entity/Order.php' for inclusion (include_path='.:/opt/php-7.2.34-3/data/pear') in /home/XXX/public_html/vendor/composer/ClassLoader.php on line 444

Fatal error: Uncaught Symfony\Component\DependencyInjection\Exception\InvalidArgumentException: Cannot determine controller argument for "Eccube\Controller\Admin\Order\MailController::index()": the $Order argument is type-hinted with the non-existent class or interface: "Eccube\Entity\Order". in /home/XXX/public_html/vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php:164 Stack trace: #0 /home/XXX/public_html/vendor/symfony/dependency-injection/Compiler/Compiler.php(140): Symfony\Component\HttpKernel\DependencyInjection\RegisterControllerArgumentLocatorsPass->process(Object(Symfony\Component\DependencyInjection\ContainerBuilder)) #1 /home/XXX/public_html/vendor/symfony/dependency-injection/ContainerBuilder.php(789): Symfony\Component\DependencyInjection\Compiler\Compiler->compile(Object(Symfony\Component\DependencyInjection\ContainerBuilder)) #2 /home/XXX/public_html/vendor/symfony/http-kernel/ in /home/XXX/public_html/vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php on line 164

特に4.0.5→4.0.6をプラグインでアップデートした際は、全画面がエラーが出て何も表示されなくなった...

調べてみると、どうやらComposerのClassMap生成に失敗しているよう

コマンドからClassMapを再生成してあげる

  • 下記コマンドを実行すると解消された
composer dumpautoload
  • 念のため、キャッシュも削除しておく
rm -rf var/cache

これでバージョンアップできた、便利〜

\ 案件のご依頼・ご相談はこちらから /