【kubernetes】php-fpmで環境変数が取得できない罠
kubernetes使う時に、コンテナに環境変数を渡してやるのは超が付くほど一般的だし、ほとんどの人がやることだと思います。 この度phpでそうする時にハマったのでメモしときます。
おさらい
コンテナへの環境変数の渡し方
渡したいコンテナにenvで設定してやります。
env - name: KEY value: VALUE
phpの環境変数参照方法
2つあります。(もっとあるかな?初心者なのでよく知りません)
- getenv('KEY')
- $_ENV['KEY']
ですね。
※後述しますが、これらも違いがあります。
普通ならこれで渡してあげたVALUEが取れるはずです。
今回は取れませんでした。。
今回の構成
ubuntu 18.04にnginxとphp-fpmでfastCGIを動かす、よくあると思われる構成です。
phpは5.6ですが、7系でも同じことが起こると思います。
詳細は後日まとめる予定。
解決方法
どうやらphp-fpmでは環境変数がリセットされるらしい!
なので設定ファイルをいじってやります。
clear_env=no
以下のファイルに /var/conf/php/5.6/fpm/pool.d/www.conf
clear_env=noを設定します。
今回はデフォルトでコメントアウトされていたので、解除してやるだけです。
これでgetenv()は取得できます。
ただし、$_ENVは取得できないかもしれません。
variables_order
/var/conf/php/5.6/fpm/php.ini の設定にvariables_orderという項目があって、こちらも今回は
GPCS
となってました。これを
EGPCS
としてやります。
これで晴れて$_ENVも設定されました!
おわりに
そろそろphpが嫌になってきた。