サーバ変数をFuelPHPで利用する

PHP

特定のサイト(バーチャルホストなど)に来た際に、必ずセットしておきたいパラメータを毎回持ちまわしたりと言うのが面倒なのでサーバ変数を利用し、それをFuelPHP側で利用してしまおうと言う内容です。

WebサーバがApacheの場合とnginxの場合がありますので、それぞれのパターンで記載しておきます。

サーバ変数を設定

apacheの場合

DocumentRoot ....
ServerName ....

SetEnv EXTRA_PARAMETER orz

CustomLog ....
ErrorLog ....

Apacheの場合には、virtualhostの設定ファイルや.htaccessに「SetEnv 変数名 値」のように記載することで、サーバ変数として設定されます。

nginxの場合

server {
  listen 80;
  server_name _:

  access_log ....
  error_log ....

  location / {
    root ....
    index index.php index.html index.htm;
  }

  location ~ \.php$ {
    fastcgi_param EXTRA_PARAMETER orz;
    ....
  }
}

nginxの場合にも、.phpへのアクセスの場合のみに変数が設定されるように、「location ~ \.php$」のセクションに「fastcgi_param 変数名 値」の記載を追加することで、設定が可能となります。

上記の様に設定した変数をFuelPHPのControllerで取得する方法は以下の通りです。

FuelPHPのコントローラからサーバ変数を出力

server.php

class Controller_Server extends Controller {

  public function action_index() {
     echo Input::server('EXTRA_PARAMETER');
  }
}

開発環境とステージング環境、本番環境と実行箇所が分かれている場合にも、この方法で簡単に分けることが可能となりますので覚えておいて損は無い内容です。

ちなみに、FuelPHPで環境を分ける場合には「FUEL_ENV」と言う変数名で、下記に記載したそれぞれの値を設定することでapp/config以下の対応する環境の設定を読み込んで実行することが可能です。

  • 開発:development
  • ステージング:staging
  • 本番:production

※恥ずかしながら、”STAGING”のように値を全て大文字で記載したために有効にならない・・・と言う残念なことをした経験があります。

コメント

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