FuelPHP1.7でローカル環境と本番環境を分けてエラーを出さない

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を使って開発する時に最初にやったことが参考になります。

参考

環境 – 概要 – FuelPHP ドキュメント

本番環境でのFuelPHPの設定~本番環境は本番環境モードで運用しましょう &mdash; A Day in Serenity (Reloaded) &mdash; PHP, FuelPHP, Linux or something

そーだいなるらくがき帳: FuelPHPを仕事で使うときに知っておくべき4つのこと

コメント

タイトルとURLをコピーしました