インフラの勉強のために、今までさくらのVPSでこのサイトを運用してきましたが、VPSの中では安いとはいえ、普通にサイトを運用している上では普通にレンタルサーバー借りたほうが安いので、移行しました。

さくらのレンタルサーバで FuelPHP を使ってはてなハイクブログを作る-ViewModel を使ってみる編 #FuelPHPAdvent2012
[FuelPHP] 本番環境に切り替える [さくらインターネット]

そのときに、ちょいちょい同じサーバーに載せてたFuelPHPのサービスも一緒に移行したときに、ちょっと詰まったので、そのメモ。

.htaccessの中身

FuelPHPのpublicフォルダの中にある.htaccessではOptionsで設定を行っていますが、どうやら、さくらのレンタルサーバーでは.htaccessでのOptionsの設定を認めていないようなので、この行をコメントアウトしましょう。

# Options +FollowSymLinks -Indexes

また、このままだと、Request exceeded the limit of 10 internal redirects due to probable configuration error.というエラーが出て、Internal Server Errorが出てしまいます。これを防ぐために、

RewriteEngine on

の下に以下を追記します。/your/app/pathの部分はご自身の環境に合わせてください。

RewriteBase /your/app/path

php.iniの編集

FuelPHPのInputでは内部的に$_SERVER["ORIG_PATH_INFO"]を使っているそうです。その情報を取得するために、php.iniを編集します。php.iniの編集はさくらのレンタルサーバー管理画面にPHP設定の編集という項目があるので、そのphp.iniのフォームに以下を入力します。

cgi.fix_pathinfo = 1

localeの設定

本来、ちゃんと設定しておくべき部分ですが、fuel/app/config/config.php

'language' => 'ja',
'language_fallback' => 'en',
'locale' => 'ja_JP.UTF-8'

と設定します。また、.UTF-8という部分を忘れないようにしましょう。ja_JPだけではエラーが起きてしまいます。

timezoneの設定

これも本来ちゃんと設定しとくべきことですが、これがないとエラーを吐くようになってしまうので、ちゃんと再確認。

'server_gmt_offset'  => 9,
'default_timezone'   => 'Asia/Tokyo',

環境変数

結構つまったのがここです。

FuelPHPではpublic/.htaccessの上部にあるSetEnv FUEL_ENV productionとして、productionモードに切り替えますが、さくらのレンサバではなぜかこれが聞きません。なので、普通にやってるとfuel/app/config/production/db.rbでのDB設定が効きません。解決策としては2つ。

  1. fuel/app/config/production/db.rbではなく、fuel/app/config/development/db.rbに書く
  2. fuel/app/bootstrap.phpでデフォルトをproductionとして設定する。

2.のやりかたは、

Fuel::$env = (isset($_SERVER['FUEL_ENV']) ? $_SERVER['FUEL_ENV'] : Fuel::DEVELOPMENT);

となっているところを

Fuel::$env = (isset($_SERVER['FUEL_ENV']) ? $_SERVER['FUEL_ENV'] : Fuel::PRODUCTION);

に書き換えればOKです!