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 |