ITエンジニアのための勉強会・イベントレポート情報メディア

とりあえずやってみる!FuelPHP 第4回 環境と設定
skill

とりあえずやってみる!FuelPHP 第4回 環境と設定

2017.12.07

 
  • このエントリーをはてなブックマークに追加

前回の第3回から、実際にファイルを編集する作業をスタートしました。これからも多くのファイルを扱っていくことになりますが、どのファイルかを示すのに、FuelPHPに用意されているディレクトリ定数を使っていきたいと思います。

えとうさちこ

ディレクトリ定数

FuelPHPには重要なディレクトリを示す定数が用意されています。 (『第3回 全体のディレクトリ構成』でご紹介したディレクトリ構成の一部です。)

fuel/
 
 |- app/
APPPATH
 |- core/
COREPATH
 |- packeages/
PKGPATH
 |- vendor/
VENDORPATH
public/
DOCROOT

例えば、fuel/app/config/db.phpであれば、APPPATH/config/db.phpとします。
今後はこれらの定数に基づいて表記します。

環境の設定

Webアプリケーション開発では、開発環境から本番同等のステージング環境、そして実際にサービスを提供する本番環境などといったように、環境が変わることが少なくありません。FuelPHPでは、環境が変わる度に設定ファイルを書き換える必要をなくすため、設定ファイルを分けることで実行環境を切り替えられるようにできています。

4つの定義済みの環境

定数 環境
\Fuel::DEVELOPMENT development 開発環境
\Fuel::TEST test テスト環境
\Fuel::STAGING staging ステージング環境
\Fuel::PRODUCTION production 本番環境

環境を設定する方法として、公式ドキュメントには3つの方法が記述されています。そのうち、実用的な方法として2つをご紹介します。

1)サーバの環境変数で設定する(推奨)
2)APPPATH/bootstrap.phpで設定する

サーバの環境変数で設定する(推奨)

ドキュメントルートに配置した.htaccessで環境変数を指定します。例えば、本番環境の場合は、.htaccessに以下のように記述します。

SetEnv FUEL_ENV production

APPPATH/bootstrap.phpで設定する

共用レンタルサーバ等では.htaccessで環境変数を設定できない場合もあるかもしれません。その場合にはAPPPATH/bootstrap.phpの次の行の定数を変更して設定できます。

21行目

\Fuel::$env = \Arr::get($_SERVER, 'FUEL_ENV', \Arr::get($_ENV, 'FUEL_ENV', \Fuel::DEVELOPMENT));

以下のようにすれば、$_SERVER[’SERVER_NAME’]で自動判定できるようにすることも可能です。

switch(isset($_SERVER[’SERVER_NAME’] ? $_SERVER[’SERVER_NAME’]: '’)) 
{ 
    case ‘hogehoge.jp’: 
        \Fuel::$env = \Fuel::PRODUCTION; 
        break; 
    case ’test.hogehoge.jp’: 
        \Fuel::$env = \Fuel::TEST; 
        break; 
    default: 
        \Fuel::$env = \Fuel::DEVELOPMENT; 
} 

これで環境の設定ができました。

有効になる設定ファイル

FuelPHPでは各種設定ファイルはAPPPATH/config/内にまとめられています。設定した環境によってどのファイルが有効になるのでしょうか。

インストール直後の状態では、APPPATH/config/内は以下のような構成になっています。
先にご紹介した4つの定義済みの環境の値のディレクトリがあることがわかります。環境ごとに異なる可能性が最も高いのはデータベース設定であることから、それぞれのディレクトリにdb.phpという設定ファイルが用意されています。

fuel/
 
 |- app/
 
   |- config/
 
     |- config.php
 
     |- db.php
 
     |- development/
 
       |- db.php
 
     |- production/
 
       |- db.php
 
     |- routes.php
 
     |- staging/
 
       |- db.php
 
     |- test/
 
       |- db.php
 

設定ファイルは、まずAPPPATH/config/直下の設定ファイルが読み込まれます。次に実行している環境のサブディレクトリ内にあるファイルが読み込まれ、マージされます。同じ設定項目がある場合は、オーバーライドでサブディレクトリ内のファイルの記述が有効になります。

例えば、
APPPATH/config/staging/config.phpを配置した場合、開発環境、テスト環境、本番環境では APPPATH/config/config.phpが有効になり、 ステージング環境では、 APPPATH/config/config.php、APPPATH/config/staging/config.phpの2つのファイルが順に読み込まれます。2つのファイルに同じ設定項目がある場合は、APPPATH/config/staging/config.phpが有効になります。

環境別のディレクトリに配置する設定ファイルには、APPPATH/config/直下の設定ファイルと差分だけを定義すればわかりやすくなると思います。

その他の設定

ルーティングの設定

特定のURLを別のURLに読み換える設定を行うことができます。 ルーティングの設定は、APPPATH/config/routes.phpで行います。

例)
http://localhost/myproject/contact/form

http://localhost/myproject/contact
に読み換えます。

return array( 
  ‘contact’ => ‘contact/form’, 
);

FuelPHPには2つの予約されたルートがあります。

_root_ ・・・ URIが指定されていないときのデフォルトルート
_404_  ・・・ コントローラまたはアクションが存在しないときのルート

return array( 
  ‘_root_’ => ‘welcome/index’, 
  ‘_404_’ => ‘welcome/404', 
); 

http://localhost/myproject

上記URLでインストール直後のトップページを確認しました(『第2回 インストール』参照)が、実はこのページは次のURLで表示されるものをルーティングの設定により読み換えていたということがわかります。

http://localhost/myproject/welcome/index

この他、ルーティングの設定に正規表現を含めることも可能ですし、正規表現以外にも特別な表現が使えます。

文字列 意味
:any URIの任意の部分にマッチ
:segment URIの1つのセグメントにマッチ
:num 数字にマッチ
:alpha 文字にマッチ
:alnum 文字と数字にマッチ

例)

return array( 
  ‘blog/(:any)’ => ‘blog/entry/$1’, 
  ‘(:segment)/about’ => ’site/about/$1’, 
  ‘(\d{2})/detail’ => ’site/id/$1’, 
); 

ここまでで、開発に入る前に最低限やっておきたい、知っておきたい設定が終わりました。
次回からは、FuelPHPを実際に動かしながら、ページが表示される仕組みをみていきたいと思います。

原稿: えとうさちこ
SEとしてJavaでのASP開発を経て、現在は主にPHPでのWEBアプリ開発を行うWEBエンジニア。フロントエンドもサーバサイドも好き。インフラ勉強中。今後はRubyにも手を出すつもり。PCに向かっている以外はだいたいテニスに没頭。おかげさまで肩こり知らず。ブログやってます。
http://sachips.byeto.jp

とりあえずやってみる!FuelPHP 第4回 環境と設定

この記事はどうでしたか?

おすすめの記事

キャリアを考える

BACK TO TOP ∧

FOLLOW