FuelPHPの開発環境と本番環境を分けたい。
ローカルではエラーが出た時に詳細なエラーを表示させ、本番では出さない。
コードは変えないで。
結論から言うと。
FuelPHPでは複数環境を指定でき、本番環境を指定したら自動で詳細なエラーは出なくなる。
また、本番環境への設定は、Apacheのサーバ変数を指定してやればいい。
1.FuelPHPの複数環境(テストや本番)
公式ドキュメントより。
環境のサポートは、FuelPHP やあなたのアプリケーションが、環境設定に基づいて意思決定することを助けます。 FuelPHP 自体は環境設定を使用して、現在有効な環境に基づいて追加の設定をロードしたり上書きしたりします。
つまり、テスト環境では詳細なエラー画面を、本番環境では簡素なエラー画面を出すために、環境設定はちゃんとしとけよってこと。
ちゃんとしとけよ俺・・・
FuelPHPでは定義済みの4つの環境がある。
- \Fuel::DEVELOPMENT:開発環境・・・実際に開発すること
- \Fuel::TEST:テスト環境・・・動作確認を行うこと、エラーは出たほうが望ましい
- \Fuel::STAGING:ステージング環境・・・最終的な確認が行われる、本番環境にできる限り近い環境が望ましい
- \Fuel::PRODUCTION:本番環境・・・実際に稼働・公開されている環境
開発環境とテスト環境について混同してた。
開発環境はローカルに作った環境、テスト環境は仮想サーバとしてOSとかも一緒にする環境のことだったのかな。
ステージング環境は作るとしたら予備のVPSを借りてってことになるな。
話は戻って。
FuelPHPのデフォルトの環境は \Fuel::DEVELOPMENT になる。
その環境は fuel/app/bootstrap.php 内で設定できる。
下のコードは三項演算子で、$_SERVER[‘FUEL_ENV’]があればその値を、なければ\Fuel::DEVELOPMENTを使えと書いてある。
Fuel::$env = (isset($_SERVER['FUEL_ENV']) ? $_SERVER['FUEL_ENV'] : Fuel::DEVELOPMENT);
つまり、$_SERVER[‘FUEL_ENV’]を設定したら、FuelPHPの環境を変えることができる。
「$_SERVER」はサーバに関する環境変数を格納するグローバル変数である。
なので、サーバ(Apache)から、「FUEL_ENV」を渡してやればいい。
2.Apacheでの設定
Apacheから「FUEL_ENV」を渡す。
再び、公式ドキュメントより。
Apache Web サーバーの SetEnv ステートメントを使ってあなたのアプリケーションの環境設定をおこなうことができます。 ほとんどの場合、環境変数を使って、次のように簡単に設定することができます。また、あなたのサーバーがコマンドラインへのアクセス権を持っていない場合の オプションです。
つまり、Apache の httpd.conf に SetEnvを書いてやれば、勝手に $_SERVERで取得してくれる。
cd /etc/httpd/conf/
sudo vim httpd.conf
以下を記述。
FUEL_ENV は大文字で、環境名は小文字で指定する必要があるので注意。
<br />SetEnv FUEL_ENV production<br />
Apacheの構文テスト。
apachectl configtest
Apacheの再起動。
sudo /etc/rc.d/init.d/httpd restart
これでOK。
3.Apacheをいじれない場合
FuelPHPを使って開発する時に最初にやったことが参考になります。
コメント