久しぶりの EC-CUBE です。
インストールの際にサーバー環境やディレクトリ権限がシビアだったりして毎回コケている印象です。
今回は EC-CUBE4 を設置してみました。
EC-CUBE 4.0 開発者向けドキュメントサイト
https://doc4.ec-cube.net/
こちらを確認していただければ、ほとんど大丈夫ですが今回もいくつか躓いたのでメモしておきます。
1. 必須のPHPモジュールが有効化されていません 等の警告が出て進めない
2. お問い合わせ、会員登録などのフォーム周りでシステムエラーが出た
■ EC-CUBE 4 インストール
composerを利用するのが良いのですが、今回は実際の環境で動作確認が行いたかったのでEC-CUBE Downloader(Webインストーラー)で設置。
動作確認後、実際の開発環境はcomposerを利用したいと思います。
1. 必須のPHPモジュールが有効化されていません 等の警告が出て進めない
こちらは環境により異なると思いますが、私の環境では「zip」「intl」が有効化されていませんよと警告が。
ということで有効化しましょう。
警告が無くなれば、あとは無事に指示に従って設定を進めていくだけです。
ディレクトリパーミッションを気にしないで良いのは便利。
■ システムエラーが出た
無事にインストールが完了すれば、管理画面やサイトフロント画面が確認出来ます。
全体的にオッケーと眺めていたら…
2. お問い合わせ、会員登録などのフォーム周りでシステムエラーが出た
お問い合わせ、会員登録ページは表示されるのだけれど、ページの下にシステムエラーの表示されております。
デバックモードにすると下記のようなエラーメッセージが…
The Swiftmailer URL “…………” is not a valid.
こちらについてはSymfonyのドキュメントページに解決のキーがありました。
Swift Mailer(symfony Docs)
https://symfony.com/doc/current/email.html
If the username, password or host contain any character considered special in a URI (such as +, @, $, #, /, :, *, !), you must encode them. See RFC 3986 for the full list of reserved characters or use the urlencode function to encode them.
ユーザー名やパスワードに特殊文字が入っているとダメで、エンコードしてあげないといけないようです。
最近ではセキュリティーの観点からパスワードに特殊文字を入れることが多いので気をつけないといけない。
PHP関数でエンコードする方法も提示されていますが、EC-CUBE内部を修正?パッチを作成?まではしたくないので、
特殊文字を手動でエンコードして差し替え。
これでざっくりと見た感じ問題なさそうです。