EC-CUBE3.0.5以降でPostgres9の環境だと正常に動作しない時の対処方法
EC-CUBE3.0.5からsessionの保存方法としてDB(dtb_session)を使うことになりました。
ただ、MySQLだと正常に動作しますが、 Postgres9だと環境によっては正常に動作しない時があります。 →MacのHomebrewでインストールしたPostgres9など
原因はSymfony2の問題であり、まだSymfony2側では対応されておりません。
回避方法としては以下のSQLを実行すると動作されるようになります。
ALTER DATABASE データベース名 SET bytea_output = 'escape';
Postgres9以降で動作しないよーという方はぜひお試しください。
EC-CUBE3でMailgunを使ったメール送信方法
以前にEC-CUBE3からGmailを使ったメール送信方法を書きました。
今回はMailgunを使ったメール送信方法について説明します。
Mailgunの説明は今回割愛しますが
Mailgunの管理画面にあるDomain Informationの
Default SMTP Login
と Default Password
を設定することで簡単に送信できます。
app/config/eccube/mail.yml
を
mail: transport: smtp host: smtp.mailgun.org port: 25 username: Mailgunで設定されているDefault SMTP Login password: Mailgunで設定されているDefault Password encryption: null auth_mode: null charset_iso_2022_jp: false
以上を設定するだけでメール送信が可能となります。
Mailgunは月10,000通までは無料なので、 クラウドやVPSでEC-CUBEの環境は出来たけどメールサーバまで作るのはしんどいという方にはお手軽に扱えるサービスです。
今回はSMTPを使ってメール送信の仕方を説明しましたが、 MailgunはAPIが提供されており本来であれば色々とできますので、 もっと色々と細かいことをしたい方はプラグインを作成してみてはいかがでしょうか。
EC-CUBE2とEC-CUBE3のテーブル比較
EC-CUBE3のテーブルについてEC-CUBE2からどのテーブルが無くなったりしているのか把握していなかったので、簡単に比較表を作成してまとめてみました。
こんな感じです。
2系テーブル | 論理テーブル名 | 3系テーブル |
---|---|---|
dtb_api_account | APIアカウント | × |
dtb_api_config | API設定 | × |
dtb_baseinfo | 店基本情報 | dtb_base_info |
dtb_best_products | おすすめ商品情報 | × |
dtb_bkup | バックアップ | × |
dtb_bloc | ブロック情報 | dtb_block |
dtb_blocposition | ブロック記事情報 | dtb_block_position |
dtb_category | カテゴリ情報 | dtb_category |
dtb_category_count | カテゴリ商品数情報 | dtb_category_count |
dtb_category_total_count | カテゴリ商品合計数情報 | dtb_category_total_count |
dtb_class | 規格情報 | dtb_class_name |
dtb_classcategory | 規格分類情報 | dtb_class_category |
dtb_csv | CSV情報 | dtb_csv |
dtb_csv_sql | CSV詳細設定SQL情報 | × |
dtb_customer | 顧客情報 | dtb_customer |
dtb_customer_favorite_products | お気に入り商品情報 | dtb_customer_favorite_product |
dtb_deliv | 配送業者情報 | dtb_delivery |
dtb_delivfee | 送料情報 | dtb_delivery_fee |
dtb_delivtime | 配送時間情報 | dtb_delivery_time |
dtb_holiday | 休日情報 | × |
dtb_index_list | インデックス一覧 | × |
dtb_kiyaku | 規約情報 | dtb_help |
dtb_mail_history | 受注メール送信履歴 | dtb_mail_history |
dtb_mailmaga_template | メルマガテンプレート情報 | × |
dtb_mailtemplate | メールテンプレート情報 | dtb_mail_template |
dtb_maker | メーカー | × |
dtb_maker_count | メーカーカウント | × |
dtb_member | 管理者情報 | dtb_member |
dtb_mobile_ext_session_id | モバイルセッション情報 | × |
dtb_module | モジュール情報 | × |
dtb_module_update_log | モジュール更新ログ情報 | × |
dtb_news | 新着情報 | dtb_news |
dtb_order | 受注情報 | dtb_order |
dtb_order_detail | 受注詳細情報 | dtb_order_detail |
dtb_order_temp | 受注一時情報 | × |
dtb_other_deliv | その他の配送先情報 | dtb_customer_address |
dtb_ownersstore_settings | オーナーズストア設定 | × |
dtb_pagelayout | ページレイアウト情報 | dtb_page_layout |
dtb_payment | 支払方法情報 | dtb_payment |
dtb_payment_options | 支払選択肢情報 | dtb_payment_option |
dtb_plugin | プラグイン情報 | dtb_plugin |
dtb_plugin_hookpoint | プラグインフックポイント | × |
dtb_products | 商品情報 | dtb_product |
dtb_product_categories | 商品カテゴリ関連 | dtb_product_category |
dtb_product_class | 商品規格情報 | dtb_product_class |
dtb_product_status | 商品ステータス情報 | × |
dtb_recommend_products | 関連商品情報 | × |
dtb_review | レビュー除法 | × |
dtb_send_customer | 顧客メール送信履歴 | × |
dtb_send_history | メール送信履歴 | × |
dtb_session | セッション情報 | dtb_session |
dtb_shipment_item | 配送商品情報 | dtb_shipment_item |
dtb_shipping | お届け先情報 | dtb_shipping |
dtb_tax_rule | 消費税ルール | dtb_tax_rule |
dtb_templates | テンプレート情報 | dtb_template |
dtb_update | モジュール更新情報 | × |
mtb_allowed_tag | 許可タグ | × |
mtb_auth_excludes | 管理画面認証除外 | × |
mtb_authority | 管理者マスタ | mtb_authority |
mtb_constants | 定数マスタ | × |
mtb_country | 国マスタ | mtb_country |
mtb_customer_order_status | 顧客表示用受注ステータス | mtb_cusotmer_order_status |
mtb_customer_status | 顧客ステータス | mtb_customer_status |
mtb_db | データベース種別 | mtb_db |
mtb_delivery_date | 商品発送日 | dtb_delivery_date |
mtb_device_type | 端末種別 | mtb_device_type |
mtb_disable_logout | ログアウト無効ページ | × |
mtb_disp | 公開フラグ | mtb_disp |
mtb_job | 職業マスタ | mtb_job |
mtb_magazine_type | メルマガ種別 | × |
mtb_mail_magazine_type | メールマガジン種別 | × |
mtb_mail_template | メールテンプレート | × |
mtb_mail_tpl_path | メールテンプレートパス | × |
mtb_mail_type | メール種別 | × |
mtb_mobile_domain | モバイルドメイン名 | × |
mtb_order_status | 受注状態 | mtb_order_status |
mtb_order_status_color | 受注ステータス色 | mtb_order_status_color |
mtb_ownersstoer_err | オーナーズストアエラー種別 | × |
mtb_page_max | ページ最大表示数 | mtb_page_max |
mtb_permission | 管理画面アクセス権限 | × |
mtb_pref | 都道府県マスタ | mtb_pref |
mtb_product_list_max | 商品一覧最大表示数 | mtb_product_list_max |
mtb_product_status_color | 商品ステータス色 | × |
mtb_product_type | 商品種別マスタ | mtb_product_type |
mtb_recommend | おすすめレベル | × |
mtb_reminder | パスワード質問マスタ | × |
mtb_review_deny_url | レビュー拒否URL | × |
mtb_sex | 性別マスタ | mtb_sex |
mtb_status | 商品ステータス | × |
mtb_status_image | ステータス画像 | × |
mtb_target | ブロックターゲット | × |
mtb_taxrule | 課税規則マスタ | mtb_taxrule |
mtb_wday | 曜日 | × |
mtb_work | 管理者稼働状態 | mtb_work |
mtb_zip | 郵便番号 | mtb_zip |
こうしてまとめてみると、結構テーブルが無くなっていますね。 機能自体がなくなっているものもあるため、致し方ありませんが。 2系から3系へ頑張って移行されようとしている方はこちらを参考に頑張ってください。
レンタルサーバでEC-CUBE3のURLにhtmlを付けさせない方法
以前にEC-CUBE3をレンタルサーバにインストールする際のURLの設定の仕方について以下の記事を書きました。
通常ec-cubeをそのままインストールすると http://hogehoge.com/html/ とhtmlがurlについてしまいます。
その回避方法として上記記事を作成したのですが、 この記事内ではファイルを移動したりと結構面倒なことをしていたため、 .htaccessを使って対処できないかなと思い、 .htaccessを以下のようにごにょごにょと対応してみました。
order allow,deny deny from all
と記述されている内容を
<FilesMatch "^composer|^autoload|^cli-config|^COPYING|\.(ht|ini|lock|dist|git|sh)$"> order allow,deny deny from all </FilesMatch> <Files ~ "index.php|index_dev.php"> order deny,allow allow from all </Files> <IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteBase /html/ RewriteRule ^user_data/(.*)$ /html/user_data/$1 [QSA,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !^(.*)\.(gif|png|jpg|css|ico|js)$ [NC] RewriteRule ^(.*)$ index.php [QSA,L] </IfModule>
に変更します。 その後、
app/config/eccube/path.yml
にあるroot_urlpath を
root_urlpath:
に修正すればhtmlがなくてもhttp://hogehoge.comだけでアクセス出来るようになります。
これで問題なく動作できるかどうか試していただけると助かります。 こちらはApache2.4未満の方を対象にしていますので、Apache2.4以上またはApache以外をお使いの方は別途対応できればと思います。
ただしこちらの対処だけではまだ不充分であり、 srcディレクトリやtestディレクトリvendorディレクトリなどの直下に対して、 appディレクトリ直下に置いてある.htaccessと同じものを置いて制限をかける必要があります。
【追記】
さくらサーバだとOptions +FollowSymlinks
が使えないため、Optionsの行を消して対応可能かどうか試して頂ければと思います。
プラグイン使用時に<html>タグが削除される及び文字化けが発生する問題
現在公開されているEC-CUBE3向けのプラグインではプラグイン対象ページだと
<!doctype html> <html lang="ja"> </html>
のタグが出力されない現象及び文字化けが発生しています。
原因は、
$crawler->html();
を使うとタグが出力されない及び文字化けが発生します。
対処方法として、
public function Hoge(・・・・) { ・・・・ $crawler = new Crawler($response->getContent()); $html = $this->getHtml($crawler); ・・・ } /** * 解析用HTMLを取得 * * @param Crawler $crawler * @return string */ private function getHtml(Crawler $crawler) { $html = ''; foreach ($crawler as $domElement) { $domElement->ownerDocument->formatOutput = true; $html .= $domElement->ownerDocument->saveHTML(); } return html_entity_decode($html, ENT_NOQUOTES, 'UTF-8'); }
というようにgetHtmlを自作してdomElementを1行ずつ取得することで文字化けは直ります。
また、$crawler->filter
も同様に文字化けが発生しますので、
$oldElement = $crawler->filter('#main'); $oldHtml = $oldElement->html(); $oldHtml = html_entity_decode($oldHtml, ENT_NOQUOTES, 'UTF-8');
とすることでこちらも対応可能です。
本来であれば本体側で組み込んで欲しい機能ですね。
EC-CUBE3でGmailを使ったメール送信方法
EC-CUBE3ではメール送信に
と3つのtransportが設定できます。
メールサーバを設定するにはinstall時に設定可能ですが、 インストール後に再設定をし直すには以下の箇所で設定できます。
app/config/eccube/mail.yml
mail: transport: smtp host: localhost port: 25 username: password: encryption: null auth_mode: null
gmailを使って送信したい場合、以下のように設定するとGmailを使って送信できます。
mail: transport: smtp host: smtp.gmail.com port: 465 username: GMAILのユーザー名 password: GMAILのパスワード encryption: ssl auth_mode: login
メールサーバの指定が簡単に設定出来るのは便利ですね。
[追記] Gmailの設定によってはアプリを許可する必要がありますので、 Gmailで送信できないという方は一度Googleにログインして許可して確認してみてください。