web-dev-qa-db-ja.com

環境変数をPHP CLIおよびFPMに渡す

PHPアプリケーションでCLIとFPMの両方で環境変数を使用したい。私がしていることは次のとおりです。

  • /etc/environmentにいくつかの変数をエクスポートします。
  • php.ini(CLIとFPM)の両方をvariables_order = "EGPCS"に構成します。
  • fPM www.confclear_env = noに構成します

私が期待しているのは、環境変数がCLIとFPMアプリケーションの両方で利用できることです。実際、これはCLIでのみ機能します。 FPMの$_ENVには、これらの環境変数は含まれていません。

www.confで環境変数を定義できることに気づきましたが、/etc/environmentからすべての変数をコピーして貼り付け、常に2つのファイルの同期を維持する必要があるため、不便です。

問題は、すべての環境変数をwww.confにコピーして貼り付けることなく、PHP-FPMアプリケーションに直接渡すことは可能ですか?

1
Kolyunya

から ドキュメント

デフォルトでは、nginxは、TZ変数を除く、親プロセスから継承されたすべての環境変数を削除します。

あなたが言ったように、あなたはfastcgi設定でそれらを設定しようとしました、それは私が思うに、この状況であなたができる最善のことです。他の人の利益のために、これは次のように行われます:

location ~ \.php$ {

    # ...
    fastcgi_param APPLICATION_ENV "production";
    fastcgi_param MY_OTHER_ENV "things";
    include fastcgi_params;

    # ...
}

「コピー&ペースト」への嫌悪感を理解し、同意します。 Puppet、SaltStack、Ansibleなどの構成管理ツールを使用して構成ファイルを管理することを検討する必要があります。これにより、必要なすべての場所間で環境変数リストを簡単に同期できます。これについてさらに情報が必要な場合はお知らせください。

2
Joe Niland