Php7-fpmをdockerコンテナーで実行しています。しかし、私のphpスクリプトは、docker-composeファイルで設定された環境変数にアクセスできません。 getenv('MY_ENV_VAR')
はFALSE
を返します。
私は変わった /etc/php/7.0/fpm/pool.d/www.conf
含める clear_env = no
とservice php7.0-fpm restart
しかし、私の環境変数の開始がそこにありません。
/etc/php/7.0/fpm/php.iniを編集して、variables_order = "EGPCS"
。
Bashシェルでコンテナーを実行すると、変数が存在することがわかります。私のphpスクリプトではアクセスできないというだけです。
何が欠けていますか?
これはすべて間違っているようですが、bashスクリプトに環境変数を追加することで機能します-
#!/bin/bash
echo "" >> /etc/php/7.0/fpm/pool.d/www.conf # new line.
if ! [ -z "$MY_ENV_VAR" ]
then
echo "env[MY_ENV_VAR] = $MY_ENV_VAR;" >> /etc/php/7.0/fpm/pool.d/www.conf
fi
それから私のDockerfileで-
COPY add_env_vars.sh /add_env_vars.sh
CMD source /add_env_vars.sh && service php7.0-fpm start
Php-fpmはシステム環境変数ではうまく機能しないようです。
詳細については-
これはPHP-FPMのいたずらです。
clear_env = no
に/etc/php/7.2/fpm/pool.d/www.conf
を設定するので、Dockerfileでphp-fpmをinit.d
、not useservice
で開始します。
例:
CMD /etc/init.d/php7.2-fpm start && nginx -g 'daemon off;'
今すぐ環境変数を確認してください????