2017-08-25 3 views
1

Ich benutze Docker-Datei für PHP Apache. Ich deklariere einige Umgebungsvariablen in der Docker-Datei, aber wenn ich das Andockfenster ausführe, bekomme ich nur die Umgebungsvariable Apache, während meine Umgebungsvariable nicht funktioniert. Hier ist meine Docker-Datei.Docker Datei Umgebungsvariable Problem in 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"] 

Während ich leicht APACHE_PID_FILE drucken kann, aber wenn ich test versucht, seine Arbeit nicht. hier ist mein PHP Methode

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

Diese beiden Verfahren sind nicht bei Test env arbeiten.

Dank

+0

Was erwarten Sie von diesem PHP-Snippet? – whites11

+0

Ich möchte auf den Wert von env zugreifen – Developer

+0

das Snippet ist unvollständig und wird nicht funktionieren, können Sie das echte Snippet posten? Was ist die Ausgabe von 'print_r ($ _ ENV);'? – ivoba

Antwort

1

Das Problem ist, Apache nicht Umgebungsvariablen aussetzen, die Apache mit ins Leben gerufen wurde. Sie müssen diese Umgebungsvariable mithilfe Ihrer Konfiguration verfügbar machen. Apache hat eine PassEnv Richtlinie, die Sie

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

PassEnv test 

Dies wird passieren die Umwelt test auf Ihrer Seite verwenden müssen. Sie benötigen es, um es für jede Umgebung zu erstellen, die Sie bereitstellen möchten.

+0

habe diesen Fehler Unbekannte Anweisung: PASSENV – Developer

+0

Welche Version von Apache? –

+0

überprüfen Sie die Version Server-Version: Apache/2.4.18 (Ubuntu) Server aufgebaut: 2017-07-27T14: 34: 01 – Developer