半農半エンジニアの記録

関西在住エンジニア。個人で勉強・開発したこと、その他趣味のことを書いてます。農業してます。

【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が嫌になってきた。