Prestashop + Docker Upgrade : 1.7.x -> 8.2.x -> 9.0.3

8.2.4 -> 9.0.3 へのアップデート時のエラー

管理画面でキャッシュをクリアし、ps_mboとps_metricsを無効にしてアップデートを実行すること。

注)ps_metricsについては、無効にしても下記エラーが発生するため、管理画面で無効にしたの上でモジュールそのものを削除、またはフォルダ名を変更して読み込まないようにすること。

/modules/ps_metrics/src/Adapter/LoggerAdapter.php line 75

Declaration of PrestaShop\Module\Ps_metrics\Adapter\LoggerAdapter::emergency
($message, array $context = [])
must be compatible with

Psr\Log\LoggerInterface::emergency(string|\Stringable $message, array $context = []): void

ps_metricsモジュールの LoggerAdapter(emergency($message, array $context = )) が古いため発生したエラー。

上記モジュールを無効にして再度アップデート。このモジュールはショップのプロセスには何も影響しないため名称変更して無効化。

$ docker exec -ti prestashop-fpm bash
# mv ps_metrics ps_metrics_disabled

メール送信エラー

MailerはswiftmailerからSymfony Mailerへ変更
Gmailのsmtpポートは587のままだとエラー。465に設定すると送信可。


Friendly URL(URL書き換え)のリセット

管理画面にブラウザからアクセスできなくなった場合、データベースでリセット
PS_REWRITING_SETTINGS( テーブルps_configuration)を検索して1から0へ変更。
キャッシュ削除

# rm -rf var/cache/*

ログイン不可

IDとパスワードは正しく、ログイン画面に戻ってきてしまう。

.htaccessファイルに以下のみを指定。

SetEnvIf X-Forwarded-Proto https HTTPS=on

下記データを一時的に無効

PS_COOKIE_CHECKIP を 0

ログインして以下手順で.htaccessを再生成

  • 管理画面の ショップパラメータ > トラフィック & SEO に移動。
  • 下の方にある「URLの設定」セクションで、フレンドリーURLを一度「いいえ」にして保存し、再度「はい」にして保存

メールテンプレート

themes/classic/mailsにメールテンプレートが残っている場合、ここが優先されて使用されますが、これらテンプレートは変換コマンドでは上書きされないようです。このため、このフォルダは無効にします。

# mv themes/classic/mails themes/classic/mails_backup

下記変換コマンド(または管理画面のEmail Themeから)で作成されるメールテンプレートhtml.txtファイルは、mails/en, mails/ja ディレクトリに保存されます。

# bin/console prestashop:mail:generate -o true classic en-US
# bin/console prestashop:mail:generate -o true classic ja-JP

メールテンプレートについては以下も参照。