Docker文件PHP中的环境variables问题

我正在使用PHP Apache的docker文件。 我在docker文件中声明了一些环境variables,但是当我运行docker的时候,它只能得到Apache环境variables,而我的环境variables不起作用。 这里是我的docker文件。

# Install dependencies From ubuntu:16.04 RUN apt-get update -y RUN apt-get update && apt-get -y upgrade && DEBIAN_FRONTEND=noninteractive apt-get -y install \ vim apache2 php7.0 php7.0-mysql php7.0-gd php7.0-mbstring libapache2-mod-php7.0 curl lynx-cur RUN service apache2 stop # Install app RUN rm -rf /var/www/html/* ADD . /var/www/html # Configure apache RUN a2enmod php7.0 RUN a2enmod rewrite RUN chown -R www-data:www-data /var/www/html/backend/runtime /var/www/html/backend/web/assets /var/www/html/uploads RUN sed -i '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf ENV APACHE_RUN_USER www-data ENV APACHE_RUN_GROUP www-data ENV APACHE_LOG_DIR /var/log/apache2 ENV APACHE_LOCK_DIR /var/lock/apache2 ENV APACHE_PID_FILE /var/run/apache2.pidd ENV test myenv_variable_value EXPOSE 80 RUN service apache2 start CMD ["apache2", "-D", "FOREGROUND"] 

虽然我可以轻松打印APACHE_PID_FILE但是当我尝试test它不工作。 这里是我的PHP方法

 <?php getenv('APACHE_PID_FILE'); $_ENV['test'] getenv('test'); ?> 

这两种方法在testing环境下都不起作用。

谢谢

问题是Apache不公开暴露Apache启动的环境variables。 您需要使用您的configuration公开这些环境variables。 Apache有一个你需要使用的PassEnv指令

https://httpd.apache.org/docs/current/mod/mod_env.html

 PassEnv test 

这将通过环境test到您的页面。 你需要它来做你想暴露的每个环境。