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+PHPで環境変数を追加したい

この参考記事でわかったけれど、同じくApache Environmentenvironmentでハマってた。
以下のような関係になっているらしい。

方法 反映先 取得方法
httpd.conf Apache Environment $_SERVER
httpd environment $_ENV

phpで環境変数$_ENVを使用しようとしていますが使用できない状態です。… – Yahoo!知恵袋

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