2010年4月7日

EC-CUBEについての所感

当初、日本初のECオープンとして注目されていた、EC-CUBEを遅ればせながら触ってみた。最近ではEC-CUBEがプリインストールされているホスティングサービスなども多数存在している。でもあまり良い評判を耳にしないのは、何故かと思ってインストールしてみたが、始めから不具合の連発。。


その1. インストール画面へのリダイレクト不具合

まず、EC-CUBEの最新版(2010年4月6日現在 ver. 2.4.3)をダウンロードして設置する。
# homeディレクトリにダウンロード
[user@www ~]$ pwd
/home/user

# EC-CUBEをダウンロードして展開
[user@www ~]$ wget http://downloads.ec-cube.net/src/eccube-2.4.3.tar.gz
[user@www ~]$ tar zxvf eccube-2.4.3.tar.gz
[user@www ~]$ cd eccube-2.4.3

# 2.4.3のパッチをダウンロードして適用
[user@www eccube-2.4.3]$ wget http://downloads.ec-cube.net/src/patch/eccube2.4.3_update_file_100401.zip
[user@www eccube-2.4.3]$ unzip eccube2.4.3_update_file_100401.zip
[user@www eccube-2.4.3]$ rm -f eccube2.4.3_update_file_100401.zip

[user@www eccube-2.4.3]$ ls
COPYING data  docs  html

続いて、CentOSにyumでインストールしたApacheのドキュメントルートにシムリンクを作成する。
# Apacheの公開ディレクトリへ移動
[user@www ~]$ cd /var/www

# 一旦、デフォルトのhtmlディレクトリを削除
[user@www ~]$ rm -rf html

# EC-CUBEのhtmlディレクトリへシムリンク作成
[user@www ~]$ ln -s ~/eccube-2.4.3/html

設置が完了したところで、MySQLのデータベース作成と、EC-CUBEのパーミッションを設定しておく。

そして、いざ設置URL(http://www.xxxxx.com/)へアクセスすると、404が返ってくる。しかも、URLはリダイレクトされ、http://install/ となっている… がっくり。
以下のように対応した。

diff -u eccube-2.4.3/data/class/util/SC_Utils.php eccube-2.4.3_dev/data/class/util/SC_Utils.php
--- eccube-2.4.3/data/class/util/SC_Utils.php   2010-04-05 19:33:10.000000000 +0900
+++ eccube-2.4.3_dev/data/class/util/SC_Utils.php       2010-04-06 19:08:03.000000000 +0900
@@ -98,6 +98,9 @@
                     }
                     closedir($dh);
                 }
+                if ($url_dir == '/') {
+                    $url_dir = '';
+                }
 
                 $location = $url_dir . '/install/';
                 header('Location: ' . $location);

この修正で無事インストール完了。



その2. APCが有効な場合のエラー

次に管理画面へログインする際、「タイムアウトしました」のようなメッセージが表示され、ログイン出来ない状態が約1時間…
phpのエラーログを見て、Googleで検索すると、APCが有効な場合はエラーが出るらしい。

えっっ。。今まで散々、APC環境下でPHP開発をしてきたが、不具合が起こった事は一度も無い。
ちなみにPHPのバージョンは5.2.10、APCは3.0.19である。


不具合まとめ
  • インストール画面へのリダイレクト処理 /install/ が //install となってしまい http://install/ を開いてしまう。
  • APCのバグ?により、APCがONの場合は管理画面にログイン出来ないエラーが発生。
    APCをOFFにするとログイン出来るが、もっさり感(動作が重い)。
  • 「郵便番号DB登録」を行うと12万件のデータがDBにインサートされる…
    しかも、待ち時間の画面には何も表示されず、真っ白け。(→かなり遅れて進捗が表示される)
    何も表示されないからポップアップ画面を閉じて、再度「郵便番号DB登録」リンクをクリックしてしまうと最悪。
    裏ではプロセスが生きているため、重複してデータがインサートされてしまう。(12万件 x 2倍)

    僕の環境ではあまりに時間がかかり過ぎてタイムアウトしてしまうため、セッション系の処理をコメントアウトしてコマンドラインから実行しました。

実際にソースコードリーディングをしてみた際の感想

5年前のソースコードかと思うくらいレガシーなソースコードで、未だにPHP4の実装をしている。なんか昔のショッピングカードCGIのような物にも思えてくる。下位互換性などの問題もあると思うが、そろそろPHP5の実装にして高速化を図った方が良いと思う。

現在では、ECのオープンソースは数少ないが、日本で同じようなECのオープンソースが出てきたら、すぐに廃れそうだ。単に開発者のスキルの問題なのか、経営層の問題なのか分からないが、このシステムでビジネスが成り立っているのが不思議なくらいだ。

0 件のコメント:

コメントを投稿