2017-08-25 18 views
1

私はPHP Apache用のドッカーファイルを使用しています。私はドッカーファイルでいくつかの環境変数を宣言していますが、ドッカーを実行すると、環境変数が動作していない間だけApache環境変数を取得します。 ここは私のドッカーファイルです。ドッカーファイルPHPでの環境変数の問題

# 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がで発足した環境変数を公開しませんです。あなたはあなたの設定を使ってこれらの環境変数を公開する必要があります。 Apacheはあなたがこれはあなたのページへの環境testを渡します

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

PassEnv test 

を使用する必要がPassEnvディレクティブを持っています。あなたが公開したいすべての環境でそれを行うために必要です。

+0

このエラーがあります。不明な指示:PASSENV – Developer

+0

どのバージョンのApacheですか? –

+0

バージョンを確認してください サーババージョン:Apache/2.4.18(Ubuntu) サーバ内蔵:2017-07-27T14:34:01 – Developer