2011年04月21日
EC-CUBE 2.11.0 - セットアップ・インストール手順(エックスサーバ)
PC、モバイル、スマートフォンに対応してる。ふつうにすごい
純国産オープンソースCMSの「EC-CUBE」
数あるECサイトの中でも特に人気がありますね。
私自身はEC-CUBEをセットアップするのが初めてでした。
また、Xサーバ(レンタルサーバです)へのインストールマニュアルは2.4が対象と参考になりません。
せっかくなので、本記事は実際に発生したエラーなども含めて説明しています。
準備
まず、データベースを構築するところからですが
ここはXサーバのマニュアル通りで問題ないです。
空のDBを作成したら、EC-CUBE Version 2.11.0(zip)をダウンロードします。
この時、リンクのすぐ下にある不具合修正ファイルの最新版も同時にダウンロードしておきます。
「eccube-2.11.0.zip」を解凍すると、以下のようになっていると思います。
- eccube-2.11.0/
- data/
- docs/
- html/
- test/
- COPYING
上記のうち、ECサイトそして機能するのに必要なデータは
「data」「html」の2つのフォルダだけです。
セットアップ前に、不具合修正ファイル内にある「data」「html」を
eccube-2.11.0の中に入れて上書きしてください。
これで準備は完了です。
セットアップ
このままアップロードして進めた場合、トップページが
「http://ドメイン/html/」になりますので、トップページを「http://ドメイン/」にしたい場合は
「dataフォルダ」を「htmlフォルダ」に移動してください。
ファイルの移動に伴って「html/define.php」の3行目を以下のように修正
修正前 define("HTML2DATA_DIR", "/../data/"); ↓ 修正後 define("HTML2DATA_DIR", "/data/");
そして「htmlフォルダ」内のソースをすべてFTPでアップロードする。
あとは「http://ドメイン/」にアクセスするだけで
ドバっとインストールされるんだろうな、と思っていましたが
500 Internal Server Error
う…うろたえるんじゃあないッ!
「.htaccess」あたりが怪しい気がする!!
というわけで、「html/.htaccess」を削除!
「iranai.htaccess」などリネームしてもOK
これで大丈夫だろう、気を取りなおして更新ボタンを押下
「フゥゥーー……初めてEC-CUBEをやっちまったァ〜〜でも想像してたより、なんて事はないなぁ」
「次へ進む」をクリックすると
Oh...
まぁ、タイムゾーンを設定してくれー!っていう警告なんでOK大丈夫
「html/define.php」の8行目に以下のソースを追加して保存
/* The system's timezone settings. */ date_default_timezone_set('Asia/Tokyo');
これで問題ない!はず!そう信じて更新ボタンを押下。
成功ですね、OK〜
あとは問題なくインストールは完了しましたとさ(^O^)/バンジージャンプ
あとはインストールの続きです。
ファイルコピー
サイト設定
データベース設定
データベース初期化
データベース初期化2(出ない場合も有り
設定内容の確認
インストール完了
ログイン画面(上部に警告)
「install/index.php」をおとなしく削除。
ログイン画面(すっきり)
管理画面内
以上です(^O^)/バンジージャンプ
2011年03月29日
CakePHP - バリデーションのエラーメッセージをシンプルに国際化(i18n)する方法
いま時のWeb開発で「i18n」は基本である。どうやら(謎の倒置法
まず、CakePHPでの一般的な国際化(i18n)については
「CakePHP1.2の簡単国際化 」がとても参考になりました。(1.3でも問題なかったです
上記の記事内のステップがすべて完了すれば
コントローラ内の"__()"で囲まれた部分はすべて国際化されます。
しかしモデル内、特にバリデーションのエラーメッセージには
"__()"が使用できないため"cake i18n"コマンドで抽出できずに英語のままです。
今回はこの部分をシンプルに日本語化する方法を書きます。
色々やれば抽出させることも可能ですが、色々やらなくてはなりません。
はじめにapp_model.phpに数行のソースを追加しておきます。
//app_model.php function invalidate($field, $value = true) { return parent::invalidate($field, __($value, true)); }
次はpoファイルの作成ですが、作業は単純。
下記ソースをpoファイルの後ろにでもコピペした後
"msgstr" の値を適宜編集してください。
#: Validation : #: notEmpty msgid "notempty" msgstr "必須項目です" #: Validation : #: alphaNumeric msgid "alphanumeric" msgstr "半角英数字ではありません" #: Validation : #: between msgid "between" msgstr "文字数が指定範囲内ではありません" #: Validation : #: blank msgid "blank" msgstr "空白ではありません" #: validation : #: cc msgid "cc" msgstr "クレジットカード番号ではありません" #: Validation : #: comparison msgid "comparison" msgstr "比較結果が正しい値ではありません" #: Validation : #: custom msgid "custom" msgstr "マッチした結果が正しい値ではありません" #: Validation : #: date msgid "date" msgstr "日付ではありません" #: Validation : #: time msgid "time" msgstr "時間ではありません" #: Validation : #: boolean msgid "boolean" msgstr "論理値ではありません" #: Validation : #: decimal msgid "decimal" msgstr "十進数の数値ではありません" #: Validation : #: email msgid "email" msgstr "メールアドレスではありません" #: Validation : #: equalTo msgid "equalto" msgstr "チェック値と同じではありません" #: Validation : #: extension msgid "extension" msgstr "拡張子が対象ではありません" #: Validation : #: ip msgid "ip" msgstr "IPアドレスではありません" #: Validation : #: minLength msgid "minlength" msgstr "指定以上の長さの文字列ではありません" #: Validation : #: maxLength msgid "maxlength" msgstr "指定以下の長さの文字列ではありません" #: Validation : #: money msgid "money" msgstr "金額ではありません" #: Validation : #: multiple msgid "multiple" msgstr "選択されたアイテムの個数、または内容が正しい値ではありません" #: Validation : #: numeric msgid "numeric" msgstr "数値ではありません" #: Validation : #: phone msgid "phone" msgstr "電話番号ではありません" #: Validation : #: postal msgid "postal" msgstr "郵便番号ではありません" #: Validation : #: range msgid "range" msgstr "数値が指定範囲内ではありません" #: Validation : #: ssn msgid "ssn" msgstr "社会保障番号ではありません" #: Validation : #: uuid msgid "uuid" msgstr "ユニークではありません" #: Validation : #: url msgid "url" msgstr "URLではありません" #: Validation : #: inList msgid "inlist" msgstr "リストに含まれた値ではありません" #: Validation : #: userDefined msgid "userdefined" msgstr "定義した内容ではありません"
最後にPoeditなどでコンパイルしてもらえばmoファイルの完成です。
ここまででデフォルトのエラーメッセージを日本語へ変更できました。
あくまでデフォルトメッセージの変更なので
さらにカスタマイズが必要になる可能性がありますね
ま!そこは使うときになったらまた考えますよ
---
PHP 5.3
CakePHP 1.3.8
2011年03月18日
CakePHP - usersテーブルを更新した際に $this->Auth->user() も更新する方法
データは更新されていても表示は変わらない・・・
id:hiromi2424 様からのコメントで他の方法があるそうなのでこちらもご覧ください。
私自身未検証ですが、かなり有力な情報であると思います。
CakePHPのAuthコンポーネントによるログインは
認証に成功するとユーザ情報をセッションに保存します。
保存したセッションは、$this->Auth->user()で取得可能です。
すごく便利なんですけど
usersテーブルが更新されても、Cakeは自動的にセッションを更新しません。
その対策として、usersテーブルが更新された際に使える
セッションを最新にする関数を紹介します。(自動ではないです
// Auth.userのセッションを更新する function _update_session_auth_user() { $this->loadModel('User'); // Userモデルを読み込んでいるなら消してもOK $user = $this->User->find('first', array('conditions' => array('id' => $this->Auth->user('id')), 'recursive' => -1)); unset($user['User']['password']); // 念のためパスワードは除外。どうでもよければ消してもOK $this->Session->write('Auth', $user); }
これで『$this->Auth->user()』に関しては特に問題はなくなりました。
--
PHP 5.3
CakePHP 1.3.7