CakePHP2.x系を使ってみる

今までCakephpは1.2系を使用して開発していましたが、そろそろ2.x系に移ろうかと、違いを勉強中。
とりあえず、「CakePHP2 実践入門 (WEB+DB PRESS plus)」を購入。

1.x系と2.x系の違いが書いてあるので、分かりやすい。
読む限りでは、それほど大きくは変わっていないかなという印象ですが、既存のシステムを移行するには作業量があるのでハードルが高そうです。新規で2.x系で開発するにはいいかもしれません。


新規インストールのサンプルが書いてあるので、それを試していますが、bakeが通りません。
Xamppでlocalhostにcaketestディレクトリを作ってbakeしてみましたが、エラーでストップ。

$ ./Console/cake bake all Category

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 'Asia/Tokyo' for 'JST/9.0/no DST' instead in /Applications/XAMPP/xamppfiles/htdocs/caketest/lib/Cake/Cache/CacheEngine.php on line 59

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 'Asia/Tokyo' for 'JST/9.0/no DST' instead in /Applications/XAMPP/xamppfiles/htdocs/caketest/lib/Cake/Cache/CacheEngine.php on line 59

Welcome to CakePHP v2.2.5 Console
---------------------------------------------------------------
App : app
Path: /Applications/XAMPP/xamppfiles/htdocs/caketest/app/
---------------------------------------------------------------
Bake All
---------------------------------------------------------------
Warning Error: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) in [/Applications/XAMPP/xamppfiles/htdocs/caketest/lib/Cake/Model/Datasource/Database/Mysql.php, line 149]

Error: Database connection "Mysql" is missing, or could not be created.
#0 /Applications/XAMPP/xamppfiles/htdocs/caketest/lib/Cake/Model/Datasource/DboSource.php(261): Mysql->connect()
#1 /Applications/XAMPP/xamppfiles/htdocs/caketest/lib/Cake/Model/ConnectionManager.php(101): DboSource->__construct(Array)
#2 /Applications/XAMPP/xamppfiles/htdocs/caketest/lib/Cake/Model/Model.php(3169): ConnectionManager::getDataSource('default')
#3 /Applications/XAMPP/xamppfiles/htdocs/caketest/lib/Cake/Model/Model.php(1096): Model->setDataSource('default')
#4 /Applications/XAMPP/xamppfiles/htdocs/caketest/lib/Cake/Model/Model.php(3191): Model->setSource('categories')
#5 /Applications/XAMPP/xamppfiles/htdocs/caketest/lib/Cake/Model/Model.php(1305): Model->getDataSource()
#6 /Applications/XAMPP/xamppfiles/htdocs/caketest/lib/Cake/Console/Command/Task/ModelTask.php(504): Model->schema(true)
#7 /Applications/XAMPP/xamppfiles/htdocs/caketest/lib/Cake/Console/Command/Task/ModelTask.php(785): ModelTask->doAssociations(Object(Model))
#8 /Applications/XAMPP/xamppfiles/htdocs/caketest/lib/Cake/Console/Command/BakeShell.php(173): ModelTask->bake(Object(Model), false)
#9 /Applications/XAMPP/xamppfiles/htdocs/caketest/lib/Cake/Console/Shell.php(392): BakeShell->all()
#10 /Applications/XAMPP/xamppfiles/htdocs/caketest/lib/Cake/Console/ShellDispatcher.php(201): Shell->runCommand('all', Array)
#11 /Applications/XAMPP/xamppfiles/htdocs/caketest/lib/Cake/Console/ShellDispatcher.php(69): ShellDispatcher->dispatch()
#12 /Applications/XAMPP/xamppfiles/htdocs/caketest/app/Console/cake.php(33): ShellDispatcher::run(Array)
#13 {main}

困ったときはGoogle。
で、調べると

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. 

この部分は「/etc/php.ini」のtimezoneを「Asia/Tokyo」に変更。
core.phpのコメントアウトしてある「UTC」のところを「Asia/Tokyo」にして有効にする。

/**
 * Uncomment this line and correct your server timezone to fix
 * any date & time related errors.
 */
	// date_default_timezone_set('UTC');
	date_default_timezone_set('Asia/Tokyo');  // 変更する

Warning Error: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) in [/Applications/XAMPP/xamppfiles/htdocs/caketest/lib/Cake/Model/Datasource/Database/Mysql.php, line 149]

この部分は「/var/mysql/mysql.sock」が無いということなので、作って、シンボリックリンクを貼る

$ sudo mkdir /var/mysql
Password:
$ sudo ln /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock /var/mysql/mysql.sock

これでとりあえずはbakeが使えるようになりました。


Via:[MAMP+CakePHP]cake bakeでエラーになるので修正
Via:xampp mac bake できない
Via:CakePHPをMacのMAMPで運用した時にcake bakeでエラーがでる
Via:CakePHPで「Warning: strtotime()~」のエラーが出た時

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)