【CakePHP】bakeのやり方


端末からコマンド叩きます
$ 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のことは申し訳程度にしか載ってないです…)

CakePHP2実践入門 [ 安藤祐介 ]

価格:3,110円
(2014/9/15 22:05時点)
感想(0件)

コメントを残す

メールアドレスが公開されることはありません。