Top > MyPage
 

ZenCartインストール

ZenCartとは

ショッピングサイト構築のためのPHPベースのショッピングカートシステムである。

Zen Cart 日本語版公式サイト

動作に必要なもの

  • PHP 4.1.x (※)4.3以上が望ましいが、
  • MySQL 3.2.x (※)これを書いている時点でMySQL 5.0以降はまだ、テスト段階
  • Apache 1.3.x

現在、対応しているデータベースはMySQLのみである。

セキュリティ上、PHPの設定は次のようにした方が良いそうです。

  • safe_mode = Off
  • register_globals = Off

Zen Cartインストール手順

インストーラ起動前の作業

・まず、公式サイトのダウンロードページより圧縮されたファイルをダウンロードする。

・そのファイルをディレクトリ構造を保ったまま端末上に展開する。

・展開された全ファイルをサーバー上の任意のディレクトリにコピーする。


- /home/YOURNAME/public_html

もしくは

- /var/www/YOURNAME/httpdocs

もしくは

- /usr/accounts/a/b/YOURNAME/httpd

などなど

今回は次のディレクトリに入れたとする。


/var/www/hoge/httpdocs/zencart

・configure.phpファイルを作成する

次の二つのファイルを探し出し、configure.phpにリネームしたうえで、パーミッションを「777」にかえる。


/var/www/hoge/httpdocs/zencart/includes/dist-configure.php

/var/www/hoge/httpdocs/zencart/admin/includes/dist-configure.php

・次のディレクトリのパーミッションを「777」に変更する。


/var/www/hoge/httpdocs/zencart/cache

/var/www/hoge/httpdocs/zencart/images
  

/var/www/hoge/httpdocs/zencart/includes/languages/english/html_includes

/var/www/hoge/httpdocs/zencart/media

/var/www/hoge/httpdocs/zencart/pub

/var/www/hoge/httpdocs/zencart/admin/backups

/var/www/hoge/httpdocs/zencart/admin/images/graphs

ファイルの準備はここまで。MySQLでdbを準備してdb名、ユーザー名、パスワードを控えておく.

インストーラ

ブラウザを立ち上げ、urlを入力する。

例えば、ドキュメントルートに"zencart"というディレクトリを作ってファイルをコピーした場合、次のようになる。


http://www.chikkun.com/zencart/

インストーラーを直接起動するのであれば

http://www.chikkun.com/zencart/zc_install

でもよい。

何事も無ければ、次のような画面が表示される。

インストーラトップ画面

ここで「続ける」をクリックすると、次にライセンス許諾の画面が表示される。

その次が、インストール前のシステム検査画面である。

システム検査画面

ここで何か問題がある場合は(PHPやファイルのパーミッションなど)、警告が出るので対処する必要がある。オールグリーンになっていれば、あとはチュートリアルにしたがってインストールしていくだけである

PHP5.2.0以降での不具合

チュートリアルにしたがってインストールすると、特に問題なく完了してショップ画面も開くことが出来たが、正しいIDとパスワードを入力しても管理者画面を表示できないという現象が発生した。

その顛末を記す。

先ずはDBとの接続を疑ったが、DBにはデータが挿入されており、パスワードの変更もされていた。接続は間違いなくされているようだ。

アパッチのログを調べて、ソースの問題のあたりを調べると、DBにアクセスするためのオブジェクトが空になっていることが問題のようだった。ソースを追っていったが、特にそれらしき所はみつからない。

ネットで同様の事が無かったか調べてみたところ、それらしきものを発見。書いてあった対処法を試してみたところ、問題なく動作した。

原因はPHPのバージョンにあった。5.2.0で挙動が少し変わった部分があるらしく、そのせいで発生していた問題のようだ。

どのように対処したか

DBにセッションを書き出す部分で、DBにアクセスするためのオブジェクトがなくなっているために発生する不具合なので、次の二つが対処法として考えられる。

  1. 設定でセッションをDBに書き出すようにしているところを、ファイルへの書き出しに変更する。
  2. 問題の発生する部分でnewしなおして、オブジェクトを生成する。

今回は1を採用した。2の場合は、問題が発生する場所全てを修正しなくてはならないからである。

その設定が書かれているファイルは、次の二つ。

  1. /zencart/includes/configure.php
  2. /zencart/admin/includes/configure.php

2の方が、管理者画面の方のものである。

[STORE_SESSIONS]を定義している部分にデフォルトでは[db]と入っているので、この部分を空にする。すると、セッションはファイルに書き出されることになる。

公開前になすべき処置

今回の例では、ブラウザで次のURLにアクセスするとインストーラが起動しました。


http://www.chikkun.com/zencart/zc_install

これを残しておくと、外部から簡単にインストール情報を書き換えられ、壊されてしまいます。

したがって、公開前に対応するディレクトリを削除する必要があります。ディレクトリをリネームするという手もありますが、完全に削除してしまう方がセキュリティ上望ましいといえます。

今回の例では、デフォルトのままの場合、ブラウザで次のURLにアクセスすると、管理者のログイン画面が表示されます。


http://www.chikkun.com/zencart/admin

非常に分かりやすいURLであり、セキュリティ上好ましくありません。そこで、[admin]の部分を全く関係ない文字列にかえる必要があります。

例えば[admin]のかわりに[curry]としてみることにします。

  1. 対応するディレクトリをリネームします

    最初にZenCartのファイル群をコピーしたディレクトリに[admin]というディレクトリがあります。

    このディレクトリを[curry]にリネームします。

  2. 設定ファイルの該当箇所を書き換えます

    [/curry/includes/configure.php]を開きます。

    PATHの設定している部分で、先程リネームしたディレクトリが関係する所を書き換えます。次の定数の定義をしているところの[admin]を[curry]に書き換えます。

これで、管理者のログインページは次のように変更されます。


http://www.chikkun.com/zencart/curry

二つのconfigure.phpを644や444にします。


/curry/includes/configure.php

/includes/configure.php

こちらのページに、さらに細かく載っています。Zen Cartサイトのセキュリティ