1

HOMEPATHApache からオペレーティング システム変数を読み取ろうとしていますgetenv()が、ブラウザでは機能しませんが、コマンド ラインでは機能します。

私はいくつかの記事を読みましたが、それは許可の問題だと言っています。しかし、Apacheの起動時にオペレーティングシステム変数をApache環境変数に伝播する方法はありますか?

4

1 に答える 1

0

Linux を使用していると仮定しています。そうでない場合は、記録のためにここに投稿します (私の検索は無駄でした。私は CentOS 6.5 を使用しています)。

私が理解していることから、Apacheプロセスを開始したユーザーの環境からの変数や、 /etc/profile.d 起動スクリプト内で指定したグローバル環境変数を含む環境変数への直接アクセスをApacheに提供する方法はありません。

私は bash を使用しているので、~/.bashrc から入手した variables.bashrc ファイルがあります。この variables.bashrc は、ユーザー環境変数を宣言します。Apache 起動スクリプト (/etc/init.d/httpd) 内に次の行を追加しました。

. /path/to/variables.bashrc

ユーザーがアクセスできるのと同じ変数をソースします。これにより、これらの環境変数を apache で使用できるようになります。

Apache は変数を受け取りますが、明示的にスクリプトに渡すように言わない限り、変数をブロックすることもできます。これはmod_envを使用するため、このモジュールがロードされていることを確認する必要があります。

PassEnv VARIABLE_NAME

構成しているディレクトリ/仮想ホストに。例えば...

<Directory "/path/to/cgi/scripts/">
   AllowOverride None
   Options None
   Order allow,deny
   Allow from all
   PassEnv VARIABLE_NAME
</Directory>

これにより、CGI スクリプト、または環境変数にアクセスしようとしているスクリプトで使用できるようになります。

これがこれを解決するための最もエレガントな方法であるかどうかはわかりませんので、他の人がこの問題を解決するために何をしたかを知りたいと思います...おそらく、これらの変数を表示するための自動化された方法 (mod_something) です。

ありがとう。

于 2014-05-21T19:43:44.223 に答える