ホームページ  >  記事  >  運用・保守  >  Apacheで環境変数を設定する方法

Apacheで環境変数を設定する方法

(*-*)浩
(*-*)浩オリジナル
2019-11-29 14:45:284633ブラウズ

Apache HTTP サーバーに影響を与える環境変数が 2 つあります。

Apacheで環境変数を設定する方法

#第一に、基盤となるオペレーティング システムによって制御される環境変数があります。これらはサーバーが起動する前に設定されます。これらは、構成ファイルの拡張で使用したり、PassEnv ディレクティブを使用して CGI スクリプトや SSI に渡したりすることができます。 (推奨学習:

Apache Server)

第 2 に、Apache HTTP Server は、名前付き変数 (環境変数とも呼ばれます) に情報を保存するメカニズムを提供します。この情報は、ログ記録やアクセス制御などのさまざまな操作を制御するために使用できます。変数は、CGI スクリプトなどの外部プログラムと通信するためのメカニズムとしても使用されます。この記事では、これらの変数を操作および使用するさまざまな方法について説明します。

これらの変数は環境変数と呼ばれますが、基礎となるオペレーティング システムによって制御される環境変数と同じではありません。代わりに、これらの変数は Apache の内部構造に保存され、操作されます。

これらは、CGI スクリプトおよびサーバー側インクルード スクリプトに提供された場合にのみ、実際のオペレーティング システム環境変数になります。サーバー自体が実行されているオペレーティング システム環境を操作する場合は、オペレーティング システム シェルによって提供される標準の環境操作メカニズムを使用する必要があります。

環境変数の設定

基本的な環境操作

Apache で環境変数を設定する最も基本的な方法は次のとおりです。無条件の SetEnv ディレクティブを使用します。 PassEnv ディレクティブを使用して、サーバーを起動したシェル環境から変数を渡すこともできます。

リクエストごとの条件付き設定

柔軟性を高めるために、mod_setenvif は特性に応じてリクエストごとに環境変数を設定できるディレクティブを提供します。特定のリクエストの。

たとえば、変数は、特定のブラウザ (ユーザー エージェント) によってリクエストが行われた場合、または特定の Referer [原文どおり] ヘッダーが見つかった場合にのみ設定できます。 mod_rewrite の RewriteRule により、[E = ...] オプションを使用して環境変数を設定することで、より高い柔軟性が得られます。

一意の識別子 最後に、mod_unique_id は、リクエストごとの環境変数 UNIQUE_ID を、非常に特殊な条件下で「すべての」リクエストにわたって一意であることが保証される値に設定します。

標準 CGI 変数

Apache 設定で設定され、シェルから渡されるすべての環境変数に加えて、CGI スクリプトと SSI ページは一連の環境変数を提供します。これには、CGI 仕様で要求されるリクエストに関するメタ情報が含まれます。

いくつかの警告

標準 CGI 変数は、環境操作ディレクティブを使用してオーバーライドしたり変更したりすることはできません。

suexec を使用して CGI スクリプトを開始すると、CGI スクリプトを開始する前に、環境が安全な変数のセットにクリアされます。安全な変数のリストは、コンパイル時に suexec.c で定義されます。

移植性の理由から、環境変数名には文字、数字、アンダースコア文字のみを含めることができます。また、最初の文字は数字ではない場合があります。この制限に一致しない文字は、CGI スクリプトおよび SSI ページに渡されるときにアンダースコアに置き換えられます。

特殊なケースの 1 つは HTTP ヘッダーで、これは環境変数を介して CGI スクリプトなどに渡されます (以下を参照)。これらは大文字に変換され、ダッシュのみがアンダースコアに置き換えられます。ヘッダーに他の (無効な) 文字が含まれている場合は、ヘッダー全体が警告なしに削除されます。

SetEnv ディレクティブはリクエストの処理中に遅く実行されます。つまり、SetEnvIf や RewriteCond などのディレクティブは、それによって設定された変数を認識しません。

サーバーが内部サブリクエストを介してパスを検索する場合 (DirectoryIndex を検索する場合や、mod_autoindex を使用してディレクトリ リストを生成する場合など)、リクエストごとの環境変数はサブリクエストに継承されません。さらに、mod_setenvif がアクションを実行する API フェーズのため、SetEnvIf ディレクティブはサブリクエスト内で個別に評価されません。

以上がApacheで環境変数を設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。