我正在使用PHP Apache的docker文件。我在docker文件中声明了一些环境变量,但是当我运行docker时,它只获取Apache环境变量,而我的环境变量不起作用。 这是我的泊坞文件。
# 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');
?>
这两种方法在测试环境中都不起作用。
由于
答案 0 :(得分:1)
问题是Apache没有公开apache启动时带来的环境变量。您需要使用您的配置公开这些环境变量。 Apache有一个PassEnv
指令需要使用
https://httpd.apache.org/docs/current/mod/mod_env.html
PassEnv test
这会将环境test
传递到您的网页。你需要它来为你想要暴露的每个环境做这件事。