EC-CUBEバージョン4.0.0から4.0.1にアップデートするプラグインが公開されたので試してみました。

 結論からいうと、.htaccessでRewriteBaseを書き換えているようなケースでは、途中工夫が必要になりそう。

 

導入条件を整える

 

 

 まず4.0.0のサイトにプラグインを適用してみます。

 EC-CUBE 4の細かいバージョンは管理サイトの「設定」→「システム設定」→「システム情報」から確認できます。

 

 

 オーナーズストアからプラグインをインストールしてみようとすると以下のように警告が表示されます。

 

 xdebugをオフと、memory_limit、max_excecution_timeの値を変更する必要があるようです。

 

 php.iniを開いて、該当する値を変更して、Webサーバーを再起動します。

 xdebugは使ってないので、今回変更したのは以下の2つ。

 

memory_limit = 128M

 

 

max_execution_time = 30

 

 管理サイトの「設定」→「システム設定」→「システム情報」で値が変更されていることを確認。

 

再度、導入トライ

 

 オーナーズストアで再度導入を試みます。

 

 

 プラグインの詳細画面(上画像)から「インストール」をクリック。

 インストールにはしばらく時間がかかります。

 

 

 

 

 インストール済みプラグイン一覧に追加されました。

 

 

 プラグインが有効化されていないとそのプラグインが作成したデータが削除されると書いてあります。

 (どんな仕組みだ? あとでコード確認してみよう)

 

 

 プラグインをすべて有効化して再開。

 

 

 「プラグインの対応状況の確認へ」をクリック。

 

 

 「書き込み権限の確認へ」をクリック。

 

 

 「ファイルの更新確認へ」をクリック。

 

 

 更新されるファイルの一覧が表示されます。

 「.htaccess」があるのに一抹の不安を覚えます。先に書いたようにRewriteBaseを設定しているので、そこを上書きされるとページが正常に表示されないため。

 

 

 下部の「最新バージョンで上書き」をクリック。

 

 

 「最新バージョンで上書き」をクリック。

 クリック後.htaccessが書き換わったため案の定404でした。

 

 .htaccessのRewriteBase設定を戻せばサイトは表示されて、一応4.0.1にバージョンは上がっていましたが、先の手順がスキップされてしまったので、不具合がある可能性はあり(メンテナンスをオンにした画面のCSSがおかしかったのでアップデートは完了してない可能性大)。

 上書きするファイルにRewriteBase設定を追加しておけばいいが、そのぐらいなら手動で更新した方が早い気もする・・・。

 


 この記事は「EC-CUBE Advent Calendar 2018」の24日目のエントリーです。

 クリスマス・イブ? いやいや、普通事前に書いておいて時限投稿するよね。・・・いえいえ、イブの朝にポチポチタイプしております。

 

解説動画を作成してみました

 

 EC-CUBE 4が公開されました。

 EC-CUBE 3の時は公開とほぼ同時に書籍を出したのですが、今回は解説動画を作成してみました。

 

EC-CUBE 4 使い方入門

https://www.udemy.com/ec-cube-4-userguide/

(サムネイルおよび動画中のロゴの使用に関してはロックオン様にご確認いただいております)

 

どんな内容

 

 開発者向けではなく、EC-CUBE 4の標準機能の使い方を動画で解説したものです。

 初めてEC-CUBEを触る人や機能を知りたい人向けに、最初はあまり小難しくならないように作りました。

 

 というわけで、以下のような人が対象です。

 

・これからEC-CUBE 4で店舗を開こうと考えている店舗オーナーさん

・これからEC-CUBE 4を初めて触る開発者さん

・動画を見てよりよくするためのアドバイスをくれる心優しい方

 

今後、このコースの動画を増やしたりするの?

 

 家で初めて作る動画だった点などもあり(いや、大変だった・・・)、最初はスモールで開始しました。

 今後の予定として以下のコンテンツ追加を考えています。

 

・CSVによるデータ登録及びダウンロード

・決済プラグインの利用方法

・商品などの項目解説

・公式プラグインの機能紹介

 

 あとは、本体のバージョンアップに関してはサポート情報を追加します。

 あまりに大きく変わる場合は必要な動画の差し替え、マイナーバージョンアップは解説動画を1つ追加する予定です(4.0.1対応済み)。

 

このコース以外にも動画を出すの?

 

 開発者向けの入門動画を考えています。

 その前にSymfony 3の書籍とかが無いので、そっちをカバーするかも。

 

もう書籍は出さないの?

 

 実は、そっちも動いております。

 来年頭ぐらいには何かしら成果物が出せるんじゃないかなと・・・。

 

クリスマスプレゼントはないの?

 

 本年限り(2018年12月31日)利用可能な価格を1200円にするクーポンコードを30個用意しました。

 ぜひ、動画を視聴してご意見ご感想いただければと思います。

 

 Udemyさんは頻繁にセールを行いますので、この価格以下ということはないと思いますが、購入の際はセール価格でないかご確認ください。 

 

 価格1200円クーポンコード:ECCUBE4CHRISMAS

 

クリスマスプレゼントくださいw

 

 ぜひ、クーポンで動画を視聴したらご評価・ご感想をください。

 厳しめの評価はSNSなどでこっそりいただけるとありがたいですw

 

 こういう動画が欲しいとか、こういう書籍が欲しいという内容なども本ブログやSNSで募集中です。

 

 それでは、よいクリスマスを!

 そして来年もEC-CUBEとそれにかかわる者にとって良い1年でありますように!

 


 EC-CUBE4.0.1が公開されました。

 更新内容の詳細は以下のURLで確認できます。

 公式サイトを探していましたが、GitHubのページなんですよねぇ。主な修正がバグ修正だからかな。

 

https://github.com/EC-CUBE/ec-cube/releases?fbclid=IwAR2m2OQlUXxbyhiZZWdZY9GCXoVakqFoZ13-BRBDY0Fqkf17d5LwwgLcex4

 

おおざっぱな変更内容

 

 修正点は「バグフィックス」と「メンテナンス機能」「プラグインのマイグレーション」「セキュリティの強化」。

 

 メンテナンス機能を有効化するとユーザーサイトはメンテナンス表示で、管理サイトは利用可能という状態になります。

 併せて管理サイトの「コンテンツ管理」に「メンテナンス管理」項目が追加されました。

 

 プラグインのマイグレーション機能はEC-CUBEのバージョンアップに合わせてプラグインの更新を通知してくれるような機能かな・・・まだ確認しておらず・・・。

 既存の4.0.0サイトをアップデートして試してみる予定。

 もうすぐボタン一つでマイナーバージョンアップするプラグインが出るらしいので、タイミング次第ではそれで済ますかも・・・。

 

クリーンインストール

 

 インストール方法は「コマンドラインからEC-CUBE4をインストールする」で紹介した方法のコマンドを以下のように修正すれば問題なく動きました。

 

php composer.phar create-project ec-cube/ec-cube ec-cube “4.0.x-dev” –keep-vcs

 

  を、

php composer.phar create-project ec-cube/ec-cube ec-cube “4.0.1” –keep-vcs

 

雑メモ

 

 せっかく規格に管理者用の名前を付けれるようになったんだから、商品に規格を設定する際にその名前も併記してくれると使いやすさUPだけど、バグフィックスフェーズっぽいから小声で呟いておく。

 


 タイトルの通り、SQL Databaseに接続しようとすると

 

サーバーとの接続を正常に確立しましたが、ログイン前のハンドシェイク中にエラーが発生しました

 

 というエラーが出て接続ができない。

 Visual Studio、Azure Database Studio、MSSMどれも同く。

 

 という場合に、ネットワークを無線LANからスマフォによるテザリングに変更したら解決した。原因はわからないけど、たぶんネットワーク的な制限に引っかかっているぽい。接続は確立しているからポートじゃなさそうだけどなんだろ・・・。

 


 タイトルの通り。

 もう少し正確に書くと以下のようなエラーが出た。

 

Failed opening required ‘/var/cache/prod/doctrine/orm/Proxies/__CG__{なにかエンティティクラス名.php’ 

 

 キャッシュが作られていない(または期限切れ)状態でのページ表示がタイムアウトなどで失敗し、doctrine(DB周り)のキャッシュが作られなかったが、ほかのキャッシュはある程度作られている状態で発生するっぽい。

 

 仮想マシン+Win10+XAMPPという激重環境で発生したけど、アクセスが多いサイトなら発生する可能性はある。

 

 再現させるのは簡単で、一度ページを開きキャッシュが生成された状態にして、/var/cache/prod/doctrine/orm/Proxies/以下のファイルを全部削除してしまえばいい。

 このエラーでやっかいなのは一度発生すると作られなかったキャッシュに該当するエンティティクラスを利用するページで必ずエラーになること。キャッシュなので時間がたてば期限切れで再度生成されるんじゃないかと思うけど、それまでの間はエラーになり続けるっぽい。

 

 寿司も作れるEC-CUBE界隈のハイスペックエンジニアの方に相談すると、どうやらSymphony 3の挙動っぽい。

 

 というわけで、ネットで調べてみると対応方法は以下の通り、

 (参考)stackoverflow : Symfony Cache doctrine/orm/Proxies failed to open stream /Proxy/AbstractProxyFactory.php on line 209

 

app/config/eccube/packages/doctrine.yaml を以下のように修正

 

    orm:
        auto_generate_proxy_classes: '%kernel.debug%'

 

 を、

 

    orm:
        auto_generate_proxy_classes: true

 

 変更したらキャッシュをいったんクリア(/var/cache/prod/以下のファイルを削除)しておく。たぶん、設定もキャッシュしているからそれをクリアするため。

 

 初期状態では、一度サイトにアクセスした際に、すべてのエンティティクラスへのキャッシュを生成して、以降はキャッシュが作られている前提で処理を進めるのでファイルが無いとエラーになる。

 設定を変更するとそのページに必要なエンティティクラスへのキャッシュを作成し、無ければ生成するという挙動に代わるので、ファイルが無くてもエラーにならない。

 

 最初に全部キャッシュを作った方が、次回以降の表示が早くなりそうだけど、doctrine部分だけだし、そこまでパフォーマンスに影響は出ないんじゃないかなぁと思うけど、EC-CUBE 4をまだ深く理解していないので、検証は各自で行ってください。


 記事「Windows Subsystem for LinuxでEC-CUBE4を動かす その1(WSLインストール)」から始まる一連の投稿で書いたが、WSLはパフォーマンスが今のところ出ない。

 個人的には仮想マシンでLinuxやUnixを立てて欲しいところではあるが、XAMPPがお手軽という意見はあると思うのでインストールしてみた。

 (VirtualBox上のWindows10+XAMPPで試したのでパフォーマンスについてはノーコメントで)

 

 インストールしてみた結論を書くと、意外とあっさり動いた。

 PHPのモジュールとか足りなくて色々エラーがでることを覚悟していたんだけど・・・。

 

XAMPPの準備

 

 XAMPPの最新版はPHP 7.2.11なのでシステム要件は十分。

 まっさらのWindows10なら、素直にインストールも終了。

 

 XAMPPのコンソールからApacheとMySQLを起動しておく。

 

 php.iniを開いて、

 

;extention=intl

 

 の「;」を外して有効化しておく。その際はApacheの再起動を忘れずに。

 後はMySQL(XAMPPだとMaria DB)のrootにパスワードを設定(または新規ユーザーを作成)して、EC-CUBE 4用のデータベースを作成しておく。

 

EC-CUBE 4のインストール

 

 EC-CUBE 4の公式からDLしたzipを解凍してドキュメントルート(デフォルトならC://xampp/htdocs)以下の任意の位置に配置。

 後はEC-CUBE 4のルートフォルダにアクセスすればインストールが始まるはずです。

 

おまけ:エラーに遭遇

 

 インストール途中で画像のようなエラーになりました。

 

 ページ表示の際にPHPのMaximum execution time(PHPの実行にmax_execution_time以上の時間がかかった)エラーで落ちると、正常にキャッシュファイルが作成されず次回以降の表示ができないという流れのよう。

 max_execution_timeを色々変えてみたけど必ず発生するわけではない模様。コケるタイミング次第かなぁ。

 

 一時的な対応としてはキャッシュファイル(var/cache/prod以下)を削除してmax_execution_timeを長めに取るなどでエラーになりにくくはできるけど、キャッシュが正常に作られなかった際にエラーで落ちずにキャッシュを使わずにページ表示して、表示できたらキャッシュを作り直すなどの流れが望ましいかなぁ。

 

 たぶん、フォーラムの以下の質問も同じ症状かなぁ。

 フォーラム:「システムエラーが発生しました。 大変お手数ですが、サイト管理者までご連絡ください。」

 


 タイトルの通りですが、LinkedIn様でXamarinの基礎講座を公開いただきました。

 

 Xamarin 基本講座

 

 Windows PCだけでなく、iPhone、Android、Macなどを使い分けながら動画を作成した苦労が思い出されます。

 ・・・という、ある意味力作なのでぜひ視聴してみてください。

 


 コマンドラインからEC-CUBE4をインストールする方法を簡単に紹介します。

 参考にしたのは公式のドキュメント。

 

http://doc4.ec-cube.net/quickstart_install

 

Composerのインストール

 

 EC-CUBE4をコマンドラインからインストールするには  Composerが必要です。

 以下のコマンドを実行して Composerを有効化します。

 

#php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
#php -r "if (hash_file('SHA384', 'composer-setup.php') === '93b54496392c062774670ac18b134c3b3a95e5a5e5c8f1a9f115f203b75bf9a129d5daa8ba6a13e2cc8a1da0806388a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
#php composer-setup.php
#php -r "unlink('composer-setup.php');"

プロジェクトを作成

 

 Composerを利用してEC-CUBEのプロジェクトを作成します。

 

php composer.phar create-project ec-cube/ec-cube ec-cube “4.0.x-dev” –keep-vcs

 

 Gitやunzipがあるとそちらを利用した方法を使うようだけど、無くてもちゃんとプロジェクトは作成されます(黄色い警告は表示されるけど問題なさそう)。

 ”4.0.x-dev”の部分はパッケージ(https://packagist.org/packages/ec-cube/ec-cube)を見ると4.0.0というのがあるので、こっちの方が良いかも。

 

データベースをMySQLに指定

 

 ec-cubeというディレクトリが作成されます。

 ルートディレクりでプロジェクトを作成した場合は/ec-cubeにインストールされることになるので、必要なら調整。

 

 この後、たたくことになるec-cube/bin/consoleに実行権限を追加。

 

#bin/console eccube:install

 

 コマンドを実行すると対話が始まるので、まずデータベースを文字列で指定。

 MySQLの場合はこんな感じ。

 

[書式]mysql://<user>:<password>@<host>/<database name>

 

 対話ではほかにもいくつか質問が行われるが、すべてデフォルトで進めました。

 

インストール後の設定

 

 コマンドが終わるとEC-CUBEがインストールされています。

 そのままだとインストール先によってはmod_rewriteがうまく動かない場合があるのでインストールディレクトリの.htaccessにRewriteBaseを追加。

 

 http://{host}/~eccube4/ec-cube/の場合なら、

 

    RewriteBase /~eccube4/ec-cube/

 

 設定が終わったら管理ページにアクセスしてみる。デフォルトでは/admin/が管理ページのURLになっている(管理ページから変更可能)。

 ユーザーはID:admin/パスワード:passwordで作成されているので、ログイン後変更をおすすめ。