Vagrant環境での環境変数の設定方法
vagrant環境で環境変数を使いたかったので調べてみたところ、
httpdファイルへの追記が必要とのことで試してみた。
httpd
/etc/sysconfig/httpdこのファイルへ必要な環境変数を記述し、vagrant upすればよい。
export SET_VALUE=hoge
httpdの中身はデフォルトでは全てコメントアウトされているので、上記だけを記述したファイルに差し替えてもOK。
再起動
apacheの再起動ではだめで、vagrant自体の再起動が必要。
追記:apacheの再起動だけで大丈夫でした。
$ vagrant reload
phpinfoで出力させてみると、無事、反映されていた。

$_ENV
これで反映はされたが、環境変数を取得するための、$_ENVが動作しなかった。
getenv()だと正しく取得出来る。
調べて見ると、php.iniの設定でENVを使用するかを設定出来るよう。
デフォルトでは使用するようになっているようだが、なぜか使用しないようになっていた。
設定する場合は以下のように記述。
場所は、/etc/php.iniにあった。
variables_order = "EGPCS"
EGPCSというのは以下のように頭文字となっている。
EGPCS (Environment (環境変数)、 Get、Post、 Cookie (クッキー)、そして Server)
http://php.net/manual/ja/ini.core.php
これを反映して再起動。
Vagrantでの反映
ファイルは予め用意しておき、vagrant upだけで反映されるようにしてみる。
とはいえ、シェルでコピーしているだけだけど。
セットアップ用のシェルスクリプト内に以下を追記。
設定用のhttpdファイルはVagrantfileと同階層のvagrant.configディレクトリ以下に設置しているものとする。
cp /vagrant/vagrant.config/httpd /etc/sysconfig/httpd
この状態で、vagrant upすれば、vagrant.config内で設定したファイルがvagrant環境に反映される。
参考
この参考記事でわかったけれど、同じくApache Environmentとenvironmentでハマってた。
以下のような関係になっているらしい。
| 方法 | 反映先 | 取得方法 |
|---|---|---|
| httpd.conf | Apache Environment | $_SERVER |
| httpd | environment | $_ENV |