質問

Apacheに事前定義された環境の一部を登録して、PHPのgetenv関数を使用して取得できるようにしたいだけです。これどうやってするの?rootを使用してexport FOO=/bar/bazで/etc/profile.d/foo.shを追加し、Apacheを再起動してみました。

役に立ちましたか?

解決

環境変数は Unix のプロセスによって継承されます。/etc/profile.d 内のファイルは、ログイン時にのみ (サブシェルではなく現在のシェルで) 実行されます。そこで値を変更してプロセスを再起動するだけでは、環境は更新されません。

考えられる修正:

  • ログアウト/ログインしてからApacheを起動します
  • ファイルをソースします: # . /etc/profile.d/foo.sh, 、次にApacheを再起動します
  • Apache initスクリプトでファイルをソースします

また、次のことを確認する必要があります。 /etc/profile.d/ Apache が起動されるときにソースされます。 init 自分自身ではなく。

最適な修正は、使用しているディストリビューションによっても異なる場合があります。これは、ディストリビューションによって構成スキームが異なるためです。

他のヒント

使用できます SetEnv 設定ファイル (/etc/httpd/conf.d/*.conf, .htaccess ...) 内。さらに、/etc/sysconfig/httpd (RPM ベースのディストリビューション上) でそれらを定義できる必要があります。 輸出 彼ら(注:未検証)。

注記:一部のディストリビューションが、システム構成に関する限り、Apache などの公的にアクセス可能なサービスから可能な限り隠蔽しようと懸命に努力したとしても、私は驚かないでしょう。そうでない場合は、将来のバージョンでこれを行うようになる可能性があります。したがって、これを明示的に行うことをお勧めします。Apache とシェルの間でそのような設定を共有する必要がある場合は、ソースを試してみてください。 /etc/profile.d/yourprofile.sh から /etc/sysconfig/httpd

Apache 構成ファイルを使用すると、サイトごとに環境変数を設定できます。

したがって、Web サーバーが 2 つの論理サイトからページを提供している場合、同じ環境変数をサイトごとに異なるように設定することができ、その結果、PHP が異なる反応を示すようになります。

を参照してください。 Apache mod_env 詳細については:

Apache のみの環境変数が必要な場合、私にとってうまくいったのは、 /etc/apache2/envvars そしてApacheを再起動します。次の設定を追加しました。

export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top