2017-05-25 8 views
1

私はアルパインの上にPHP 5.6とApache 2.4をセットアップしたドッカーコンテナを持っています。私のPHPコードでは、getEnvを使用して、ホストマシンから渡している環境変数をドッカーの作成ファイルの一部として読んでいます。私は環境変数を読むことができるようです。おそらく私の理解は間違っているかもしれませんが、私はpassenvを私のApache Virtual Host Configurationに使う必要があると思っていました。あるいは、それをenvvarsファイルに追加し、Apacheによってロードされるべきです。なぜこの作品が好きですか?PHP `getEnv`はシステム環境変数を読み取ることができます

ドッキングウィンドウ-compose.yml容器内の

version: '2' 
services: 
    app: 
    image: image1 
    environment: 
     - HOST 

私はEnvを実行して、私はHOST=192.168.1.1を見ることができます。 PHPコードではgetEnv('HOST')を使用しています。この質問は、それが動作するように働く方法ではありません:)しかし、なぜそれが動作するのようにもっと

+1

コード、してください。どのような変数を読もうとしていますか? – tadman

+0

コードを追加しました。役立つことを願っています。 – tabiul

+0

別のvarを試してください。たとえば、 ' - FOO = BAR' – Robert

答えて

0

問題についてのさらなる研究を行った後。多分私は理由を知っていると思います。 env Apacheモジュールは、CGIとSSIページに環境変数を渡すためのものです。 CGIとSSIの場合、Apacheは別のプロセスを生成するので、新しく作成されたプロセスに環境変数を渡すためにはenvモジュールが必要です。 Apache PHP Moduleの場合、同じことは起こっていません。 Apache PHP Moduleでは、Apacheは埋め込みインタプリタを使用してPHPファイルを処理します。同じApacheプロセスなので、ホスト・マシンで使用可能なすべての環境変数をプロセスで使用できます。

  1. https://httpd.apache.org/docs/2.4/mod/mod_env.html
  2. https://blog.layershift.com/which-php-mode-apache-vs-cgi-vs-fastcgi/
関連する問題