CakePHP3で環境変数を設定して本番環境と開発環境を分けて処理をする場合
2019/08/05
Apacheに環境変数を設定し本番環境と開発環境を振り分ける処理
定数の設定ファイルを本番環境用と開発環境用とで分ける
「CakePHP3でユーザ定義の定数、変数を設定し、読み込む方法解説」で、定数、変数を別ファイルで管理する方法を解説しました。
PHP7以降は、配列も「define()」で定数として指定できるようになりましたので、配列も含めて定数として保持しておきたい情報を管理することが楽になりました。
今回は、その定数などを設定しておく設定ファイルを、開発環境と本番環境とで自動的に切り替える方法を解説します。
例えば、下記のような URLなどの開発環境と本番環境で値が違う場合を想定しています。
1 2 3 4 5 |
// 開発環境 define("SITE_URL","http://localhost"); // 本番環境 define("SITE_URL","http://example.com"); |
本番環境では本番環境のものを、開発環境では開発環境のものが取得されるようにすることで、本番環境にアップする際に設定情報を変更することなく、そのままアップすればいい、という仕組みを構築することができるようになります。
対応の詳細は次項以降で解説しますが、開発環境の方に「環境変数」を設定しておき、それが取得できた場合は開発環境と判定して開発環境の定数ファイルを読み込む、という仕組みです。
(「環境変数」が取得できない場合は、本番環境と判定します。)
定数ファイルを作成
まずは、「CakePHP3でユーザ定義の定数、変数を設定し、読み込む方法解説」の記事に沿って設定ファイルを作成します。
開発環境用
/config/const_develop.php
本番環境用
/config/const_production.php
開発環境用の「const_develop.php」には下記を設定します。
1 2 3 4 5 6 |
<?php use Cake\Core\Configure; return [ // サイトの URL define("SITE_URL", "http://localhost"), ]; |
本番環境用の「const_production.php」には下記を設定します。
1 2 3 4 5 6 |
<?php use Cake\Core\Configure; return [ // サイトの URL define("SITE_URL", "http://example.com"), ]; |
定数ファイルを取得する bootstrap.phpに分岐処理を記述
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
try { Configure::config('default', new PhpConfig()); Configure::load('app', 'default', false); // 定数ファイルを読み込み if (isset($_SERVER["CAKE_ENV"]) && $_SERVER["CAKE_ENV"] == "develop"){ Configure::load("const_develop"); } else { Configure::load("const_production"); } } catch (\Exception $e) { exit($e->getMessage() . "\n"); } |
上記の 6行目のように環境変数によって処理を振り分ける処理を記述します。
環境変数は、「getenv("CAKE_ENV")
」でも取得することができます。
CakePHP3の場合は、「env("CAKE_ENV")
」でも取得することができます。
また、私の環境ではうまく取ることができませんでしたが、「$_ENV["CAKE_ENV"]
」でも取得できるようです。
環境変数をApacheの設定ファイル「httpd.conf」に設定
最後に、振り分け処理で利用する「環境変数」を設定します。
環境変数は、開発環境にのみ指定します。
(ある程度自由に設定情報を変更することができる開発環境にのみ設定する、というところもポイントです。)
設定場所は、Apacheの設定ファイル「/etc/httpd/conf/httpd.conf」です。
(「httpd.conf」のパスは CentOSを想定しています)。
「httpd.conf」ファイルを開いて、ファイルの一番最後などに書きの記述を追加します。
1 |
SetEnv CAKE_ENV develop |
「CAKE_ENV」が環境変数の変数名で、「develop」がその値になります。
複数設定することもできます。
設定後は Apacheを再起動して環境変数を反映させます。
また、環境変数が正しく反映されたことの確認には、「phpinfo()」を実行する方法があります。正しく設定されている場合は画面に表示されます。
これで、設定した環境変数が取得できれば、開発環境の設定ファイルが読み込まれるようになります。
Shellを実行する場合はコマンド内に環境変数を指定する
CakePHP3の Shellでバッチ処理を作成して、コマンドラインから Shellを起動して実行する場合は、下記のようにコマンド内に環境変数を指定します。
1 2 3 4 5 |
// コマンドラインからシェルを実行する $ bin/cake SampleTests getList // コマンドの前に環境変数を指定する $ CAKE_ENV=develop bin/cake SampleTests getList |
Shellを実行する場合、Apacheを経由せずにプログラムが実行されるため、Apacheの設定ファイル「/etc/httpd/conf/httpd.conf」に環境変数を記述していてもそれは読み込まれません。
そのため、実行するコマンドの中に環境変数を直接記述しておく必要があるのです。
CakePHP3の関連記事
CakePHP4のCSS、JavaScript、画像のブラウザへのキャッシュをコントロールするCakePHP3でレコードを保存(追加、更新、Insert、Update)する複数の方法を紹介
CakePHP3でモデルなしフォームからCSVをアップロードしレコードを更新する方法解説
CakePHP3でPHP Simple HTML DOM Parserを使ってスクレイピングする方法
CakePHP3のInsert On Duplicate Key Update(upsert)構文を解説・バルク処理も
CakePHP3の1対多での連携を中間テーブルを使った多対多の連携に変更するときの手順
CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法
CakePHP3で Ajaxを使う方法の解説。3.6以降対応。Successとthenの両方を解説。
CakePHP3でパンくずの指定は HTMLヘルパーを使って指定する方法を解説
CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説
その他の「CakePHP3」に関する記事一覧
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
CakePHP3で Ajaxを使う方法の解説。3.6以降対応。Successとthenの両方を解説。
CakePHP3でajaxを利用する処理の実装方法を解説。プルダウンを変更するとデータベースの値を取得し検索結果の内容を変更するというような処理を想定。CakePHP3.6以降の CSRF対策対応済。
-
-
CakePHP4のCSS、JavaScript、画像のブラウザへのキャッシュをコントロールする
CakePHP4、CakePHP3でブラウザにキャッシュさせる設定の解説。CSS、JavaScript、画像をブラウザにキャッシュさせるのか、定期的にリロードする設定にするのかの設定が可能。
-
-
CakePHP3のHtmlHelperのLink設定のまとめ。mailto、URL、Root/Homeのリンクなども
CakePHP3でHtmlHelperを使ってリンクの設定をする方法のまとめ。基本形からURLを指定、class、id、targetを指定、mailtoのリンク、画像をアンカーに、JavaScriptのダイアログなどの解説。
-
-
CakePHP3、CakePHP4、CakePHP5のバージョンを指定してインストールする詳細な手順を解説
CakePHP3のバージョンを指定してインストールする方法を詳細解説。CakePHP3のインストールはComposerを使うため設定もほぼ自動で完了。データベースの接続情報を記載すればアプリ開発のベースが整う。
-
-
CakePHP4で公開側と管理側のデザインテンプレートを分ける方法・setLayout()
CakePHP4でデフォルトのレイアウトファイル「default.php」は管理側に使用し、これとは別のデザインを公開側のページに設定したい、を実装する方法を解説。
-
-
CakePHP3の画像、ファイルアップロードプラグインUpload Plugin 3.0の設置解説・その1
CakePHP3でファイル、画像をアップロードするプラグイン、upload plugin 3を導入する手順を解説した記事。3部作のその1で基本的な導入方法の解説で読みながら簡単に導入が可能。
-
-
CakePHP 2.3 Search Pluginで検索処理 その2表示件数を動的に変える方法
CakePHPの検索プラグイン Search Pluginの検索処理の中で動的に表示件数を変える方法です。
-
-
CakePHP4、5でSELECT telephone as tel FROM usersの様にasでカラムに別名を付ける方法
CakePHP4、CakePHP5でクリエビルダーを利用してテーブルからレコードを取得する際、asを使用してカラムの別名で値を取得したい場合の対応方法を解説。また、別名にはハイフンやアスタリスクなど使用できない文字がある点も解説。
-
-
CakePHP 2.3 Model、Controllerの見たい変数の中身をログ出力
CakePHPの Modelや Controllerの変数の中身をログとして出力して見る方法を提供します。
-
-
CakePHP3でファイルのアップロード処理を自作・解説付き・その1
CakePHP3でファイルをアップロードする処理を、php.netにある「エラーを起こさない」と説明がある処理を参考に作成。サンプルソースとその解説付きで、コピペでも動くし、カスタマイズも簡単!