CakePHPに納得が行かないので、実験環境を作ることにした。手持ちのMacに作ります。MySQLを入れるのは面倒なので、Sqlite3でやります
CakePHPは /Users/takuya/Sites/cakephp で動かすことにしよう
動作させるディレクトリとURL
インストール先: /Users/takuya/Sites/cakephp WEBから見た先:http://localhost/~takuya/cakephp
でアクセスできるようにします
githubのログを消しておく。
rm -r .git git init git add git commit -m "initial import”
.htaccessの修正
.htaccessが肝なので、これを編集します
CAKEROOT/.htaccess
<IfModule mod_rewrite.c> RewriteEngine on RewriteBase /~takuya/cakephp RewriteRule ^$ app/webroot/ [L] RewriteRule (.*) app/webroot/$1 [L] </IfModule>
同様に他のhtaccessも更新
CAKEROOT/app/.htaccess
<IfModule mod_rewrite.c> RewriteEngine on RewriteBase /~takuya/cakephp/app RewriteRule ^$ app/webroot/ [L] RewriteRule (.*) app/webroot/$1 [L] </IfModule>
CAKEROOT/app/webroot
<IfModule mod_rewrite.c> RewriteEngine on RewriteBase /~takuya/cakephp/app/webroot/ RewriteRule ^$ app/webroot/ [L] RewriteRule (.*) app/webroot/$1 [L] </IfModule>
Apacheの設定
ホームディレクトリのUser空間に.htaccessを許可する
takuya@air:~/Sites/cakephp$ cat /etc/apache2/users/takuya.conf <Directory "/Users/takuya/Sites/"> Options Indexes MultiViews FollowSymLinks AllowOverride All AllowOverride all Order allow,deny Allow from all </Directory>
ApacheでPHPを動くようにする。
/etc/apache2/httpd.conf
LoadModule php5_module libexec/apache2/libphp5.so LoadModule rewrite_module libexec/apache2/mod_rewrite.so
同時にrewriteも有効にする。
Apacheの再起動
sudo apachectl restart
php.iniで設定を修正
Mountain Lionの場合 php.iniが無くなってたんで作ります。
sudo cp /etc/php.ini.default /etc/php.ini
タイムゾーンを修正する
;Defines the default timezone used by the date functions ; http://php.net/date.timezone date.timezone = "Asia/Tokyo"
Apacheの再起動
sudo apachectl restart
Cakephpを起動して確認
open http://localhost/~takuya/cakephp
データベースを設定
sqlite用に設定を書きます
app/Config/database.php
class DATABASE_CONFIG { public $default = array( 'datasource' => 'Database/Sqlite', 'persistent' => false, 'database' => '/Users/takuya/Sites/cakephp/app/tmp/my_first.sqlitedb',, #'database' => ':memory:', 'prefix' => '', //'encoding' => 'utf8', ); }
データベースファイルを作っておく
app/Console/cake bake all sudo chmod 777 -R /Users/takuya/Sites/cakephp/app/tmp
sqlite のデータファイル出来たよ
ls app/tmp/ -l 合計 0 drwxrwxrwx 5 takuya staff 170 12 21 20:32 cache drwxrwxrwx 3 takuya staff 102 12 21 20:32 logs -rwxrwxrwx 1 takuya staff 0 12 21 21:47 my_first.sqlitedb drwxrwxrwx 3 takuya staff 102 12 21 20:32 sessions drwxrwxrwx 3 takuya staff 102 12 21 20:32 tests
テーブルを作ってみて実験
sqlite3のコンソールをつかってテーブルを作ります。
sqlite3 /Users/takuya/Sites/cakephp/app/tmp/my_first.sqlitedb
流しこむテーブル定義は次の通り
CREATE TABLE users ( id integer NOT NULL PRIMARY KEY autoincrement , username VARCHAR(255) NOT NULL UNIQUE, password CHAR(40) NOT NULL, group_id INT(11) NOT NULL, created DATETIME, modified DATETIME ); CREATE TABLE groups ( id integer NOT NULL PRIMARY KEY autoincrement , name VARCHAR(100) NOT NULL, created DATETIME, modified DATETIME ); CREATE TABLE posts ( id integer NOT NULL PRIMARY KEY autoincrement, user_id INT(11) NOT NULL, title VARCHAR(255) NOT NULL, body TEXT, created DATETIME, modified DATETIME ); CREATE TABLE widgets ( id integer NOT NULL PRIMARY KEY autoincrement, name VARCHAR(100) NOT NULL, part_no VARCHAR(12), quantity INT(11) );
Bakeryでcake bake する
app/Console/cake bake all 1 y … app/Console/cake bake all 2 y … app/Console/cake bake all 3 y … app/Console/cake bake all 4 y …
CakePHPの resourceにアクセスします
open http://localhost/~takuya/cakephp/users
(スクリーンショット 2012-12-21 22.15.04)
動いたよ!
sqlite簡単ですね。
理屈がわかれば簡単です。
Sqliteならフルパスで書けばいいんですね。
問題はMySQLとSQLの書き方が異なることですね
cakephp も railsみたいに migration できればいいのに
なんかぐぐっても出てこないんだけど、一応動くんでうsね
参考URL
http://miztools.so.land.to/php5_list/eat_cake/cake2/edit/sqlite3
http://d.aoikujira.com/blog/index.php?Mac%E3%81%AEMountain%20Lion%E3%81%A7Apache%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B
http://book.cakephp.org/2.0/en/installation.html
http://stackoverflow.com/questions/8035314/using-sqlite3-with-cakephp-2-0