2017-08-25 45 views
1

我使用PHP Apache的docker文件。我在docker文件中聲明瞭一些環境變量,但是當我運行docker時,它只能得到Apache環境變量,而我的環境變量不起作用。 這裏是我的碼頭文件。PHP中的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'); 
?> 

這些方法都沒有在測試ENV的情況下工作。

謝謝

+0

你對這段php代碼片有什麼期待? – whites11

+0

我想要訪問env – Developer

+0

的值這段代碼不完整並且不起作用,您能發佈真正的代碼段嗎? 'print_r($ _ ENV)'的輸出是什麼;'? – ivoba

回答

1

問題是Apache不公開Apache發佈的環境變量。你需要使用你的配置公開這些環境變量。阿帕奇有一個PassEnv指令,你需要使用

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

PassEnv test 

這將環境test傳遞到您的網頁。您需要它來爲您想要公開的每個環境做好準備。

+0

得到此錯誤未知指令:PASSENV – Developer

+0

什麼版本的Apache? –

+0

檢查版本 服務器版本:Apache/2.4.18(Ubuntu) 服務器內置:2017-07-27T14:34:01 – Developer