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で作成されているので、ログイン後変更をおすすめ。

 


 Windows Subsystem for LinuxでEC-CUBE4を動かす方法その3です。

 今回はWebインストーラーを利用してEC-CUBE4をインストールします。

 

 EC-CUBE4のインストールは大きく、Web上で行う方法と、コマンドラインから行う方法の2つがあります。

 まずはWeb上からインストールする方法を紹介します。

 

 今回の投稿は長くなったので3回に分けて投稿されています。

Windows Subsystem for LinuxでEC-CUBE4を動かす その1(WSLインストール)

Windows Subsystem for LinuxでEC-CUBE4を動かす その2(LAMP環境構築) 

Windows Subsystem for LinuxでEC-CUBE4を動かす その3(Webインストーラー)

 

ドキュメントルート/ec4/にファイルを配置

 

 公式サイトからダウンロードしてきたeccube-4.0.0.zipをアップロードして解凍します。

 WindowsからLinuxへのファイルの転送はsshやFTPを使っても良いですが、Windows Subsystem for Linuxからは/mnt/cでWindows上のCドライブにアクセスできるので、直接コピーしてきてもOK。

 

 eccube-4.0.0というディレクトリが作成されるので、ec4と名前を変えて/var/www/html/ec4に配置。

 

 http://{Windows Subsystem for LinuxのIP}/ec4/にアクセスしてみます。

 下のようにインストールページが表示されればOK。

 

 

 何らかのエラーが表示されるならエラー内容を確認して修正。

 主に権限の問題でファイルが作成できないか、PHPのライブラリが足りない。

 

 404の場合は http://{Windows Subsystem for LinuxのIP}/ec4/index.php にアクセスしてみる。

 これで http://{Windows Subsystem for LinuxのIP}/ec4/index.php/install/step1 というようなURLになったら、mod_rewriteが機能していない。

 

 あとは403 Forbiddenが出たら権限を見直す。

 

 ここをクリアすれば、インストール完成は目前です。

 

Webインストーラーでインストールを進める

 

 「次へ進む」をクリックするとEC-CUBEの動作に必要なファイル・フォルダの権限をチェックします。

 下の画像のように「アクセス権限は正常です」と表示されればOK。

 

 表示されない場合は、表示に従い権限を変更します。

 

 続いて、サイトの設定を行います。

 店名やメールアドレスなどを設定します。

 メーラー、SSLは動かしていないのでとりあえず未記入で進みます。

 

 続いてデータベースの設定。

 今回はMySQLを利用するので以下のように入力します。

 

データベースの種類: MySQL

データベースのホスト名: 127.0.0.1

データベースのポート番号: (空欄)

データベース名: eccube4 (というデータベースをその2で作成したので)

ユーザー名: root

パスワード: (設定したパスワード)

 

 あとは設定することはないので、そのまま次へを進んで行きインストールを完了します。

 エラーが表示されず処理が完了したら、お店のフロントページと管理ページにアクセスしてみます。

 

 続いてコンソールからのインストールですが、そもそもコンソールから導入する人はこういう説明要らないんじゃないかなと思うので、気が向いたら・・・。


 Windows Subsystem for LinuxでEC-CUBE4を動かす方法その2です。

 今回はWindows Subsystem for LinuxにApache、PHP、MySQLを導入します。

 

 今回の投稿は長くなったので3回に分けて投稿されています。

Windows Subsystem for LinuxでEC-CUBE4を動かす その1(WSLインストール)

Windows Subsystem for LinuxでEC-CUBE4を動かす その2(LAMP環境構築)

Windows Subsystem for LinuxでEC-CUBE4を動かす その3(Webインストーラー)

 

apt-getの更新

 

 まずは apt-getを更新します。

 

  #sudo apt-get update
  #sudo apt-get upgrade

 

Apacheの導入

 

 続いてApacheをインストールします。

 

  #sudo apt-get install apache2
  #sudo service apache2 start

 

 ブラウザでアクセスしてページが表示されることを確認します。

 Apacheのバージョンは2.4.29がインストールされました。

# apache2 -version
Server version: Apache/2.4.29 (Ubuntu)
Server built:   2018-10-03T14:41:08

 

mod_rewriteを有効に

 

 EC-CUBE4はmod_rewriteを有効にする必要があります。

 

 コンフィグファイルで.htaccessを使えるようにします。

 

  # sudo vi /etc/apache2/sites-enabled/000-default.conf

 

        <Directory /var/www/html>
          AllowOverride All
        </Directory>

 

 mod_rewriteを有効にします。

 

   # sudo a2enmod rewrite
   # sudo service apache2 restart

 

PHPの導入

 

 続いてPHPを導入します。

 EC-CUBE4の要件はPHP7.1以上です(PHPのバージョンが低いとEC-CUBEのインストール時にバージョン不足がエラーとして表示されます)。

 ライブラリも一緒にインストール。必要なライブラリは公式のシステム要件で確認してください。依存関係で一緒に入ったライブラリなどもありますので、導入後に必要なライブラリが入っているか確認してみてください。

 

  # sudo apt-get install php
  # sudo apt-get install php-mysql 
  # sudo apt-get install php-devel
  # sudo apt-get install php-mbstring
  # sudo apt-get install php-pdo
  # sudo apt-get install php-xml
  # sudo apt-get install php-intl
  # sudo apt-get install php-zip
  # sudo apt-get install php-json
  # sudo apt-get install php7.2-curl

 

 シンプルな状態にしたいので推奨されているAPC(Alternative PHP Cache)はインストールしませんでした。

 Apacheを再起動して、適当なPHPファイルを作成して実行されることを確認します。

 

MySQLのインストール

 

 データベースはMySQLを利用することにします。

 

  # sudo apt-get install mysql-server
  # sudo service mysql start
  # sudo mysql -u root

 

  最後のmysqlコマンドもsudo付きなので注意してください。

 パスワードを指定しない状態のrootは要sudoです。

 

 MySQLに入って、rootのパスワードとデータベースを作成します。

 ちゃんとしたいならroot以外のユーザーを作るべきですが、今回は簡略。

 

   mysql > ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pass';
   mysql > FLUSH PRIVILEGES;
   mysql > create database eccube4;

 

 mysql_native_password BY ‘pass’の「”」内は任意のパスワードを指定してください。

 

 これで最低限EC-CUBE4を動かす設定は完了です。

 (メールとかSSLは割愛)

 

 次回はようやくEC-CUBE4をインストールします。