環境変数一覧





環境変数は、もともと、UNIX 上でプログラムを動作させるためにありました。
UNIX は、最初から現在のようにグラフィカルなインターフェース(GUI)を持っていたわけでなく 最初は、CUI (Character User Interface)つまり、テキストで構成された画面でした。

このころ、プログラムには、コマンド・ライン・パラメータと呼ばれる方式で、引数として、ファイル名や 各種の条件を渡して動作させました。
しかし。毎回同じようなパラメータを記述しないでいいようにファイルではないが、どこかにあるパラメータというものが考案されました。
すなわち、プログラムの中から参照でき、かつ、必要であれば、変更できるようなパラメータの集まりです。
これを環境変数と呼んで、今日にいたりました。

CGIは、それ以降に出来た技術でした。
また、CGIは、通信を含む技術だったので、従来のコマンドラインでのパラメータの引渡しには無理がありました。
何か、いいパラメータ渡しにと利用されたのが環境変数でした。

以下は、環境変数の総覧です。ABC順に記述しています。 ブラウザが流して初めて環境変数となりうるのでブラウザに依存している変数もあります。 また、HTTP_REFERERのようにブラウザのそのとき状態で、付加さえないものもあります。



AUTH_TYPE 承認メソッド
  ユーザを認証するときに使用する認証メソッド。
【実用重要度】

CONTENT_LENGTH データのコンテキストの長さ
  CGIで流れたデータのバイト数が入る。 0のときは、CGIでリクエストされたデータがないことを示す。
【例 A】0      
【例 B】115
【実用重要度】★★★

CONTENT_TYPE データのコンテントタイプ
  MIMEといったほうが理解しやすいかもしれない。現在下記3種類があり、データのデコード/エンコードに関与するが、ほとんどのデータが、application/x-www-form-urlencoded なのでこれだけに対応してもよい。
    application/x-www-form-urlencoded     ほとんどがコレ。
    multipart/form-data     ファイルをアップロードする目的のエンコードである。
    text/plain     メールの時に使用する。ほぼ、そのまま出力される。
    IE はセキュリティの問題から < FORM action=maileto://siranai@dareka.co.jp enctype=text/plain method=post のように使用しても、登録されたメールソフトが起動するだけになっています。8割位(2000年7月当社調査)を占めるブラウザが対応していないので、実際のところ、「この方式でのメールの使用は出来ない」と考えるべきだ。

【例 A】CONTENT_TYPE=application/x-www-form-urlencoded
【例 B】CONTENT_TYPE=multipart/form-data
【例 C】CONTENT_TYPE=text/plain
【実用重要度】★★★

DOCUMENT_ROOT ドキュメント・ルート
  WEBドキュメントが入るディレクトリ。あまり見かけない。
【実用重要度】

GATEWAY_INTERFACE CGIのリビジョン
  サーバが使用するCGIのリビション。
【例 A】CGI/1.1
【実用重要度】

HTTP_ACCEPT クライアントが受け付けるMIMEタイプ
  ブラウザが自分で処理できるMIMEタイプのリストを吐き出し、それが回ってくる。 下記は、IE5.0 の吐き出すHTTP_ACCEPTであるが、サーバに登録さえすればMIMEは使用できるので、マイクロソフト自社製品に有利なコードを吐き出してる。
【例 A】image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, */*
【実用重要度】

HTTP_ACCEPT_ENCODING
  【例 A】gzip, deflate
【実用重要度】

HTTP_ACCEPT_LANGUAGE
  ブラウザの持つ言語を示す。IEやネスケ以外では、取得できないときがある。iモード系は取得できないようだ。
【例 A】ja
【例 B】en
【例 C】en-us
【例 D】en-uk
【実用重要度】

HTTP_COOKIE
 
【例 A】=SITESERVER =ID = 7dbb632c236b3ffbb12b3f0badeb4848
【実用重要度】

HTTP_HOST
 
【例 A】www.pst.co.jp
【実用重要度】

HTTP_FROM ユーザの電子メールアドレス。
  リクエストを出しているユーザの電子メールアドレス。
ほとんどのブラウザは、この変数をサポートしていません。
NetscapeNavigator 2.x でセキュリティ・ホールの指摘を受けたからです。
知らないうちに「自分のメールアドレスが盗まれる」っていやだよね。
【実用重要度】

HTTP_REFERER アクセスする直前のURL。
  CGIプログラムにアクセスする前にクライアントのブラウザが指し示していたURL。 リンクをたどってCGIまで来たときに付加されるが、その他のときは情報そのものがない。

【小耳】
Macintosh用の iCab というブラウザがあって、そいつは設定によってHTTP_REFERERを返さないようにできます。 プライバシーに対する配慮でしょう。

【小耳-携帯電話(J-Phone)でのインターネット】
携帯電話でのインターネットで J-Phone の携帯電話からは「HTTP_REFERER」は出力していないようです。
【実用重要度】★★

HTTP_USER_AGENT クライアントがリクエストを発行するブラウザ
  ブラウザの名前を示しています。
【例 A】Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)
【実用重要度】

HTTP_VIA 経由
  プロキシなど経由してきた情報です。
【例 A】inet01 (MSProxy/1.0) for 192.168.2.19
【実用重要度】

PATH_INFO エキストラパス情報
   
【実用重要度】

PATH_TRANSLATED PATH_INFO を交換した情報
  【例 A】C:\InetPub\wwwroot
【実用重要度】

QUERY_STRING クエリ情報
  とても重要。
REQUEST_METHOD=GET のときに、受け取るGGIデータの文字列が格納される。
これが、GETの時の CGI の文字列本体。
長さは、CONTENT_LENGTHで与えられる。
このデータが拾えないときは、CONTEXT_LENGTH は0である。
【実用重要度】★★★

REMOTE_ADDR リモートホストのIPアドレス
  リモートホストのIPアドレスを示しています。
これを外して送ってくるブラウザは聞かない。
誰が送ったかを知る最も信頼性の高い変数です。
【例 A】210.163.170.210
【実用重要度】★★

REMOTE_HOST リモートホスト名
  本来は、zzz.aaa.co.jp のように入ってくるはずだが、ほとんどIPアドレスでくる。
【例 A】210.163.170.210
【小耳-携帯電話でのインターネット】
以下は、携帯電話でのインターネットからのアクセスの場合の REMOTE_HOST の表。
J-Phone(JSky) 東京からのアクセスの場合 jp-t.ne.jp
J-Phone(JSky) 北海道からのアクセスの場合 jp-d.ne.jp
J-Phone(JSky) 東北からのアクセスの場合 jp-h.ne.jp
NTT-DoCoMo(i-mode)   docomo.ne.jp
IDO(EZ)   ido.ne.jp

【実用重要度】

REMOTE_IDENT リクエストを出しているユーザ。
  この変数は、NCSA IdentityCheck フラグが有効になっており、クライアントマシンがRFC931認定技法をサポートするときだけセットされる。
【実用重要度】

REMOTE_USER ユーザの承認名
   
【実用重要度】

REQUEST_METHOD リクエストから作られたメソッド。GET,POSTなど
  非常に重要。
GETのときは QUERY_STRING から値を取り、POST のときは標準入力から値を取得しなければならない。
フォーム(form)タグではmethod 属性で指定したものが割り当てられます。<form action=.. Method=POST>
【例 A】GET
【例 B】POST
【実用重要度】★★★

SCRIPT_NAME 実行されるスクリプトパス。
  呼び出され実行されているCGIプログラムのパスが入る。 SERVER_NAMEと組み合わせて自分自身の呼出URLを取得できる。
【例 A】/scripts/dev/nai/test1.exe
【実用重要度】★★

SERVER_NAME サーバーホスト名、またはIPアドレス
  SCRIPT_NAMEと組み合わせて自分自身の呼出URLを取得できます。
【例 A】www.pst.co.jp
【実用重要度】★★

SERVER_PORT リクエストから送られてきたポートの番号
  これは世界的に 80 です。8080 を使用しているものもあるようです。
【例 A】80
【実用重要度】★

SERVER_PORT_SECURE
 
【例 A】0
【実用重要度】

SERVER_PROTOCOL プロトコルの名前とリビジョン
  プロトコルの名前とリビジョンを示す。
【例 A】HTTP/1.0
【実用重要度】

SERVER_SOFTWARE サーバーソフトウェアの名前とバージョン
  サーバーソフトウェアの名前とバージョンを示す。
【例 A】Microsoft-IIS/3.0
【例 B】Microsoft-IIS/4.0
【実用重要度】

X-JPHONE-MSNAME J-PHONE の独自ヘッダー
 
J-PHONE の J-SKY WALKER対応機 からのアクセスであることを示すために付加しているそうです。
SKY WALKER対応機には付加していないそうです。(00/06/30 追加)
【実用重要度】★

HTTP_X_UP_SUBNO EZWEB の独自ヘッダー:メールアドレス
 
【小耳-携帯電話(EZWEB)でのインターネット】
EZWEB のブラウザでは、E-MAILアドレスを出力するようです。
セキュリティホールになる可能性が高いので、いずれなくなるでしょう。(00/07/18 追加)
【実用重要度】