端末からコマンド叩きます
$ cd cake/app/
$ Console/cake bake all [テーブル名]
※テーブル名がtest_tablesであれば、[テーブル名]をTestTableとして実行する今回指定するテーブルに限らず、テーブル名に「.(ドット)」を含むものが同じDBにあると権限がないよエラー等が出ますので、アンダーバー等に変更しましょう。区切り文字と判断してしまうみたいですね。
bakeを実行した後に、同じCakePHPを使っているページにブラウザでアクセスすると、以下のようなエラーが表示されることがあります。
Warning: SplFileInfo::openFile(/home/admin/www/test/html/manager/../../cake/app/tmp/cache/persistent/myapp_cake_core_cake_console_): failed to open stream: Permission denied in /home/admin/www/test/cake/lib/Cake/Cache/Engine/FileEngine.php on line 314
cake/app/tmp/cache/persistent/myapp_cake_core_cake_console_
のキャッシュファイルが、bakeを実行したユーザで作成され、664のパーミッションになっています。ブラウザでアクセスするときはapacheユーザなので、このパーミッションだと拒否されてしまいます。
対応の仕方としては、以下のどれか
1.上記のキャッシュファイルを削除する
2.上記のキャッシュファイルのパーミッションを777に設定する
3.apacheユーザの所属グループをうまいこと設定してやる
キャッシュファイルは時々削除されるようなので、2をやっても半永久的な対策にはなりません。連続してbakeする場合は1より2の方がベター。
▼私はこの本を参考にCakePHP 2.3で開発しています(bakeのことは申し訳程度にしか載ってないです…)
価格:3,110円 |