CakePHPをさくらインターネットで動かすと「500 Internal Server Error」が発生する件について

インターネットで気になるアレコレをGoogle+で!

how-to-work-cakephp-on-sakura-internet

レンタルサーバーをさくらインターネットで契約して、CakePHPをダウンロードして、解凍して、サーバーにアップロードして、さあ始めるぞと意気込んでいたら「500 Internal Server Error」が返ってきました。とても悲しい。そこで次のように解決したのでメモ。

.htaccessファイルに「RewriteBase」を追記する

参考にしました、ありがとうございます。

[CakePHP] さくら で「500 Internal Server Error」

ドメイン設定でマルチドメインの設定でCakePHPを動かそうとすると「500 Internal Server Error」が返ってきてしまうみたいです。そこで、CakePHPの中にある三つの.htaccessファイルに「RewriteBase」を追記。

今回例に出すバージョンは2.4.10ですので多少内容が異なる部分もあるかもしれません…

home/(アカウント名)/www/hoge/.htaccess

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteBase /
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>

home/(アカウント名)/www/hoge/app/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /app
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
</IfModule>

home/(アカウント名)/www/hoge/app/webroot/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

国外IPアドレスフィルタを無効に設定

国内にいらっしゃる方はRewriteBaseの追記のみで動くと思うのですが、国外にいらっしゃる方はこれも注意しないといけません。さくらインターネットでは海外からの不正なアクセスを防ぐために国外IPアドレスからの特定のアクセスを制限しているみたいです。詳しい設定方法は公式のサポートページでご確認の上、国外IPアドレスフィルタを有効から無効に設定してください。

おまけ

だいたいこれで動くと思うのですが、これでもダメであればパーミッション(=ファイルやディレクトリのアクセス権限)の設定を間違えているかもしれませんので確認しておきましょう。FTPソフト(僕はCyberduckを使っています)などを用いて、ディレクトリのパーミッションを755(もしくは705)に設定してください。

参考にしました

[CakePHP] さくら で「500 Internal Server Error」