CakePHP2でGitリポジトリを使ってコードのバージョン管理をしていたのですが、少しはまりました。
.gitignoreに tmp ディレクトリは無視するように設定をしてあったので、CakePHP2のapp/tmpがコミットされないのですが、そうするとリポジトリから取り出したCakePHP2アプリをデプロイしたときに問題がおきます。app/tmpディレクトリがないのでエラーがでてしまうのです。ということで、下記のようにして用意する必要があります。。$CAKE_APP_ROOT がCakePHP2アプリのルートディレクトリだとします。chownするときは、CentOSならapache、Ubuntuならwww-dataといった感じになるので、使っている環境ではどうするのが良いかを確認してから実行するようにしましょう。
$ CAKE_APP_ROOT=/var/www/html/cakephp2_app_sample $ sudo mkdir -p $CAKE_APP_ROOT/app/tmp/cache/models/ $ sudo mkdir -p $CAKE_APP_ROOT/app/tmp/cache/persistent/ $ sudo mkdir -p $CAKE_APP_ROOT/app/tmp/cache/views/ $ sudo mkdir -p $CAKE_APP_ROOT/app/tmp/logs/ $ sudo mkdir -p $CAKE_APP_ROOT/app/tmp/sessions/ $ sudo chown -R apache:apache $CAKE_APP_ROOT/app/tmp/sessions/
下記のようなエラーが出たときは確認をしてみてください。
[Mon Jul 08 17:04:03 2013] [error] [client 192.168.x.x] PHP Warning: file_put_contents(/var/www/html/cakephp2_app_sample/app/tmp/logs/error.log) [<a href='http://php.net/function.file-put-contents'>function.file-put-contents</a>]: failed to open stream: No such file or directory in /var/www/html/cakephp2_app_sample/lib/Cake/Log/Engine/FileLog.php on line 87