php で getenv 関数を使用して取得できるように、Apache に事前定義済みの環境の一部を登録してもらいたいだけです。これどうやってするの?root を使用して /etc/profile.d/foo.sh を export FOO=/bar/baz で追加し、apache を再起動してみました。
4 に答える
環境変数は、Unix のプロセスによって継承されます。/etc/profile.d 内のファイルは、ログイン時にのみ (サブシェルではなく、現在のシェルで) 実行されます。そこで値を変更してからプロセスを再起動するだけでは、環境は更新されません。
考えられる修正:
- ログアウト/ログインしてからApacheを起動
- ファイルを source:
# . /etc/profile.d/foo.sh
し、apache を再起動します。 - apache init スクリプトでファイルを読み込みます
また、自分ではなく/etc/profile.d/
Apache が開始されたときにソースが供給されていることを確認する必要があります。init
最適な修正は、使用しているディストリビューションによっても異なる場合があります。これは、構成に異なるスキームが使用されているためです。
構成ファイル(/etc/httpd/conf.d/*.conf、.htaccess ...)でSetEnvを使用できます。さらに、それらを/ etc / sysconfig / httpd(RPMベースのディストリビューション上)で定義し、エクスポートできるはずです(注:テストされていません)。
注:一部のディストリビューションが、システム構成に関する限り、Apacheなどの公的にアクセス可能なサービスから可能な限り隠そうとしても驚かないでしょう。そうでない場合は、将来のバージョンでこれを開始する可能性があります。したがって、これを明示的に行うことをお勧めします。Apacheとシェルの間でこのような設定を共有する必要がある場合は、/ etc / sysconfig/httpdから/etc/profile.d/yourprofile.shを入手してみてください。
Apache 構成ファイルを使用すると、サイトごとに環境変数を設定できます。
したがって、Web サーバーが 2 つの論理サイトからページを提供している場合、サイトごとに同じ環境変数を別々に設定して、PHP の反応を変えることができます。
詳細については、Apache mod_envを参照してください。