EC-CUBE 4.0.2 -> 4.0.3 へのアップデート @ OpenBSD
Tags: eccube, ecommerce, openbsd, migration
Published: 2020-07-09 12:03:56

---
title: EC-CUBE 4.0.2 -> 4.0.3 へのアップデート @ OpenBSD
published: true
description: OpenBSD 6 に EC-CUBE 4.0.0 をインストールして、その後に 4.0.2 までアップデートしていました。今回はさらに、現在の最新版である 4.0.3 へアップデートしました。手順は、公式ドキュメント の 「EC-CUBE本体のバージョンアップ」 に従いました。OpenBSD に特有なのは、以下の 2 点です。1. PHP のコマンドを実行する時は php の代わりに php-7.3 を使用する。 2. .htaccess に更新がある場合、必要に応じて差分を httpd.conf / php.ini (php-73.ini) で吸収する。
tags: eccube, ecommerce, openbsd, migration
series: EC-CUBE On OpenBSD
---

[EC-CUBE](https://ec-cube.net) [4.0.3](https://github.com/EC-CUBE/ec-cube/releases/tag/4.0.3) が 2019 年 9 月 5 日にリリースされました。
2019 年 10 月の消費税 10% への増税を見据えた、軽減税率に関する対応が含まれています。

[OpenBSD](https://www.openbsd.org) にインストールしていた EC-CUBE を 4.0.2 -> 4.0.3 にアップデートした手順を記します。（実施したのは 2019 年 11 月です。）
[公式ドキュメント](https://doc4.ec-cube.net/update)をもとにしています。

#### 環境

- OS: OpenBSD 6.6 amd64
- Web サーバー: OpenBSD [httpd](https://man.openbsd.org/httpd.8)
- AP サーバー: [PHP](https://www.php.net/) 7.3 + [PHP-FPM](https://php-fpm.org/)
- カートシステム: EC-CUBE 4.0.2 -> 4.0.3
- DB: [MariaDB](https://mariadb.org/) 10.0

#### 4.0.2 -> 4.0.3 変更ファイル一覧

[Github](https://github.com/) で Tag 間の差分を見ることで確認できます:
https://github.com/EC-CUBE/ec-cube/compare/4.0.2...4.0.3?w=1#files_bucket:

差分を整理して、手順用の一覧メモを作成しました:

```
# changelogs

app/DoctrineMigrations
app/config/eccube
src/Eccube/
html/template
maintenance.php
web.config
symfony.lock

# 4.0.2 -> 4.0.3 specific

.htaccess
composer.json
composer.lock
index.php

# ignored:

.dockerignore
.github/CONTRIBUTING.md
.github/ISSUE_TEMPLATE.md
.github/PULL_REQUEST_TEMPLATE.md
.gitignore
.php_cs.dist
.travis.yml
Dockerfile
LICENSE.txt
dockerbuild/
README.md
tests/Eccube/
tests/bootstrap.php
codeception.sh
codeception/

app/Plugin/AnnotatedRouting
app/Plugin/EntityExtension
app/Plugin/EntityForm
app/Plugin/FormExtension
app/Plugin/HogePlugin
app/Plugin/MigrationSample
app/Plugin/PurchaseProcessors
app/Plugin/QueryCustomize
```

## アップデート手順

#### 1. メンテナンスモードを有効にする

```console
$ touch %eccube-dir%/.maintenance
```

#### 2. サイトのバックアップ

```console
$ mkdir %backup-dir%/eccube4.0.2-`date '+%Y%m%d'`

$ mysqldump -d %database% -u %dbuser% -h %dbhost% -p > %backup-dir%/eccube4.0.2-database-backup.sql
$ cp -rp %eccube-dir% %backup-dir%/eccube-4.0.2

$ # check
$ ls -l %backup-dir%
```

#### 3. EC-CUBEのソースファイルをバージョンアップしたものに置き換え

```console
$ ftp http://downloads.ec-cube.net/src/eccube-4.0.3.zip
$ unzip eccube-4.0.3.zip -d ~
/home/%my-user%/eccube-4.0.3/...
```

```console
$ cd %eccube-dir%

$ for x in \
    'app/DoctrineMigrations' \
    'app/config/eccube' \
    'src/Eccube' \
    'html/template' \
    'dockerbuild' \
    'bin' \
    'vendor' \
;
    echo $x;
    doas rm -rf $x;
    doas -u www mkdir -p $x;
    doas -u www cp -r ~/eccube-4.0.3/$x/* ./$x;
    if [ $x = 'vendor' ]; doas chown -R %my-user%: ./$x; end;
end
```

#### 4. 個別ファイル差し替え

```console
$ for x in \
    'composer.json' \
    'composer.lock' \
    '.htaccess' \
    'index.php' \
; \
    echo $x; \
    doas -u www cp -f ~/eccube-4.0.3/$x ./$x; \
    if [ $x = 'composer.json' ]; doas chown %my-user%: ./$x; end; \
    if [ $x = 'composer.lock' ]; doas chown %my-user%: ./$x; end; \
end
```

```console
$ for x in \
    'maintenance.php' \
    'web.config' \
    '.dockerignore' \
    'Dockerfile' \
; \
    echo $x; \
    doas rm -rf $x; \
    doas -u www cp ~/eccube-4.0.3/$x ./$x; \
end
```

#### 5. composer.json/composer.lockの更新

```console
$ doas -u www php-7.3 bin/console cache:clear --no-warmup
                                                                                                 
 [WARNING] Some commands could not be registered:                                                
                                                                                                 

In EntityProxyService.php line 46:
                                                                                                
  Type error: Too few arguments to function Eccube\Service\EntityProxyService::__construct(),   
  1 passed in /var/www/sites/wanpaku-kozo.com/web/sale/eccube/var/cache/prod/ContainerZjohjxh/  
  getEntityProxyServiceService.php on line 10 and exactly 2 expected                            
                                                                                                


 // Clearing the cache for the prod environment with debug false                                 

                                                                                                 
 [OK] Cache for the "prod" environment (debug=false) was successfully cleared.                   
```

#### 6. スキーマ更新/マイグレーション

```console
$ php-7.3 bin/console doctrine:schema:update --force --dump-sql
gen -> /tmp//proxy_WNS2tQvnvfyf/Customer.php
gen -> /tmp//proxy_WNS2tQvnvfyf/Customer.php

 The following SQL statements will be executed:

     ALTER TABLE ...
[...]

 Updating database schema...

     35 queries were executed

                                                                                                 
 [OK] Database schema updated successfully!                                                      
                                                                                                 
$ php-7.3 bin/console doctrine:migrations:migrate
                                                              
                    Application Migrations                    
                                                              

WARNING! You are about to execute a database migration that could result in schema changes and data loss. Are you sure you wish to continue? (y/n)y
Migrating up to 
[...]
  ++ migrated (1.13s)

  ------------------------

  ++ finished in 1.19s
  ++ 3 migrations executed
  ++ 2 sql queries
```

#### 7. プロキシの再生成

4.0.3 へのバージョンアップ時のみ、プロキシの再生成が必要です。

```console
$ doas rm -f app/proxy/entity/*.php

$ php-7.3 /usr/local/libexec/composer.phar dump-autoload
Deprecation warning: require-dev.mikey179/vfsStream is invalid, it should not contain uppercase characters. Please use mikey179/vfsstream instead. Make sure you fix this as Composer 2.0 will error.
Generated optimized autoload files containing 5542 classes

$ php-7.3 bin/console eccube:generate:proxies
$ php-7.3 bin/console cache:warmup --env=prod
```

#### 8. フロントテンプレートファイルの更新

対象はありませんでした:
https://github.com/EC-CUBE/ec-cube/pulls?q=is%3Apr+label%3Aaffected%3Atemplate+is%3Aclosed+milestone%3A4.0.3

#### 9. メンテナンスモードを無効にする

```console
$ rm .maintenance
```

#### 10. その他

4.0.2 -> 4.0.3 のアップデートには特記事項があります:

> - [軽減税率制度に関する対応](https://github.com/EC-CUBE/ec-cube/issues/4183) を利用する場合, [差分](https://github.com/EC-CUBE/ec-cube/pulls?q=is%3Apr+is%3Aclosed+label%3A%E8%BB%BD%E6%B8%9B%E7%A8%8E%E7%8E%87%E5%AF%BE%E5%BF%9C) の適用が必要です。 ※合わせて [注意点](https://doc4.ec-cube.net/update/4_0_3) もご確認下さい。
> - [PDFのロゴ画像変更](https://github.com/EC-CUBE/ec-cube/pull/4216) を利用する場合, [差分](https://github.com/EC-CUBE/ec-cube/commit/e8f2952925dda75db5b02ab52bf357f59343ecef) の適用が必要です。
> - [複数ファイルのアップロード](https://github.com/EC-CUBE/ec-cube/pull/4235) を利用する場合, [差分](https://github.com/EC-CUBE/ec-cube/commit/fe5cae800fa4e7f09cbb905e1ef3632b34e41489) の適用が必要です。