1. DBを作成する
mysqlとかで、データベースを作成します。
1 |
mysql> create database cakephp; |
2. DBの情報をCakePHPに反映する
そして、それをcakePHPの/app/Config/database.phpに反映します。
まず、雛形のdatabase.php.defaultをdatabase.phpにコピーして、
その内容を変更します。
1 2 |
# cp /app/Config/database.php.default /app/Config/database.php # vi /app/Config/database.php |
以下の箇所の、”login”にユーザ名、”password”にそのパスワード、”database”に
そのデータベース名を入れて保存してください。
1 2 3 4 5 6 7 8 9 10 11 |
class DATABASE_CONFIG { public $default = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'user', 'password' => 'password', 'database' => 'database_name', 'prefix' => '', //'encoding' => 'utf8', ); |
/app/Console/cake bakeで、ベースとなるスクリプトを自動作成する
cakeコマンドの”bake”を使用するとベースとなるシステムが簡単に作成できます。
以下のように実行します。
1 |
./app/Console/cake bake |
このとき以下のようなメッセージが出力される場合があります。
1 2 3 |
Warning: strtotime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /home/hoge/public_html/usjnews/lib/Cake/Cache/CacheEngine.php on line 60 Warning: strtotime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /home/hoge/public_html/usjnews/lib/Cake/Cache/CacheEngine.php on line 60 |
これは、タイムゾーンが設定されていないためなので、「app/Config/core.php」のファイルの、date_default_timezone_set(‘UTC’);の
下に一行追加して以下のようにします。
1 2 |
//date_default_timezone_set('UTC'); date_default_timezone_set('Asia/Tokyo'); |
また、以下のメッセージが出たときは、パーミッションに問題があります。
1 |
Warning: SplFileInfo::openFile(/home/hoge/public_html/usjnews/app/tmp/cache/persistent/myapp_cake_core_file_map): failed to open stream: Permission denied in /home/hoge/public_html/usjnews/lib/Cake/Cache/Engine/FileEngine.php on line 355 |
このときは、以下のように設定しておくと問題が解決されるかもしれません。
1 2 |
$ sudo setfacl -R -m u:apache:rwx -m u:hoge:rwx app/tmp/ $ sudo setfacl -dR -m u:apache:rwx -m u:hoge:rwx app/tmp/ |
また、bake 進めて行くと以下のようにエラーで終了する場合があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
$ ./app/Console/cake bake Welcome to CakePHP v2.4.10 Console --------------------------------------------------------------- App : app Path: /home/hoge/public_html/usjnews/app/ --------------------------------------------------------------- Interactive Bake Shell --------------------------------------------------------------- [D]atabase Configuration [M]odel [V]iew [C]ontroller [P]roject [F]ixture [T]est case [Q]uit What would you like to Bake? (D/M/V/C/P/F/T/Q) > c --------------------------------------------------------------- Bake Controller Path: /home/hoge/public_html/usjnews/app/Controller/ --------------------------------------------------------------- Use Database Config: (default/test) [default] > Error: Database connection "Mysql" is missing, or could not be created. #0 /home/hoge/public_html/usjnews/lib/Cake/Model/ConnectionManager.php(105): DboSource->__construct(Array) #1 /home/hoge/public_html/usjnews/lib/Cake/Console/Command/Task/ModelTask.php(927): ConnectionManager::getDataSource('default') #2 /home/hoge/public_html/usjnews/lib/Cake/Console/Command/Task/ControllerTask.php(421): ModelTask->getAllTables('default') #3 /home/hoge/public_html/usjnews/lib/Cake/Console/Command/Task/ControllerTask.php(444): ControllerTask->listAll(NULL) #4 /home/hoge/public_html/usjnews/lib/Cake/Console/Command/Task/ControllerTask.php(151): ControllerTask->getName() #5 /home/hoge/public_html/usjnews/lib/Cake/Console/Command/Task/ControllerTask.php(60): ControllerTask->_interactive() #6 /home/hoge/public_html/usjnews/lib/Cake/Console/Command/BakeShell.php(115): ControllerTask->execute() #7 /home/hoge/public_html/usjnews/lib/Cake/Console/Shell.php(440): BakeShell->main() #8 /home/hoge/public_html/usjnews/lib/Cake/Console/ShellDispatcher.php(207): Shell->runCommand(NULL, Array) #9 /home/hoge/public_html/usjnews/lib/Cake/Console/ShellDispatcher.php(66): ShellDispatcher->dispatch() #10 /home/hoge/public_html/usjnews/app/Console/cake.php(36): ShellDispatcher::run(Array) #11 {main} |
原因はpdoがないためらしい。
以下に詳細が書いてあるようです。
http://sisomoti.blog76.fc2.com/blog-entry-27.html