CakePHP is quite a mature framework. Yet I often run into troubles with some more exotic hosting companies.
Yesterday I was deploying a site hosted at 1 & 1 Internet Ltd. For a few hours I was trying everything but still I got the same 500 internal error. Finally I traced the problem to mod_rewrite. It turned out that I need to add RewriteBase to all Cake’s .htaccess files. So if you’re deploying your lovely new site to 1 & 1 your root .htaccess file might look like this:
# Turn on PHP 5
AddType x-mapp-php5 .php
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
mysqli_connect and socket support
Some web hosts use sockets for MySQL connection. Socket is the 6th parameter in mysqli_connect (or mysql_connect). Cake does not know about this 6th parameter. I submitted a ticked some time ago, but it was closed and the change not implemented.
The solution is however very simple. Depending on what driver you use, edit file dbo_mysqli.php or (dbo_mysql) in cake/libs/model/datasources/dbo/ and on line 94 (CakePHP 1.2 rev 6311) add the 6th parameter to the mysqli_connect function. Don’t forget to add the default socket value (I use null) to the $_baseConfig private variable of the DboMysqli class you’re just editing.