HOME>WEBプログラム覚書>[PHP]環境変数を設定して開発環境と本番環境を分岐する。

[PHP]環境変数を設定して開発環境と本番環境を分岐する。

ローカルのテスト環境と本番環境で定数とか変えたい場合、よく$_SERVER['HTTP_HOST']の値で条件分岐を書くんですが コマンドラインで利用すると$_SERVERの値はほとんど設定されてないのでNoticeエラーを吐き出します。

CakePHPでConsole使う場合など困るので環境変数を設定します。

SetEnv

httpd.confのVirtualHostディレクティブとかに SetEnv key value って形式で設定します。

httpd.conf

  1. <VirtualHost *:80>
  2.     ServerAdmin webmaster@localhost
  3.     ServerName local.kantenna.com
  4.     DocumentRoot "/home/sites/local.kantenna.com/"
  5.     #環境変数
  6.     SetEnv ENV_MODE develop
  7. </VirtualHost>
  8.  

PHPではgetenv()や$_ENVで値を取得することができます。 CakePHPの場合、上記設定をしてcore.phpにこんなかんじで設定しておくと

Config/core.php

  1. <?php
  2. if (getenv('ENV_MODE') === false) {
  3.     // 本番環境
  4.     Configure::write('Env.Mode', 'product');
  5.     Configure::write('debug', 0);
  6.     Configure::write('database', 'product');
  7. } else {
  8.     // ローカル開発環境
  9.     Configure::write('Env.Mode', 'develop');
  10.     Configure::write('debug', 2);
  11.     Configure::write('database', 'develop');
  12. }
  13. ?>

以後、処理を分岐したい場合、

PHP

  1. <?php
  2. if (Configure::read('Env.Mode') === 'develop') {
  3.     // ローカル開発環境用の処理
  4. }
  5. ?>

という感じで記述できます。

投稿日 2012年5月31日 03:20
カテゴリ PHP
タグ .htaccess | CakePHP | 設定
トラックバック URL http://www.kantenna.com/cgi-bin/mt504/mt-tb.cgi/1303

コメント

コメントする
Name
Email Address
URL