みなさんが作ったホームページにどのような人がアクセスしてきたかを知りたいと思いませんか?
環境変数というものを使って、ある程度のことを知ることができます。 環境変数は、アクセスしたブラウザーがサーバーに対して送信されますので、 これらの情報はサーバー側で受け取ることができます。
Perl スクリプトでは、予約変数である %ENV に自動的に入ってきます。
%ENV は連想配列ですね。実際に環境変数の一覧を表示する CGI を作ってみましょう。
この CGI は連想配列 %ENV のキーをソートして表形式に出力しています。
#!/usr/bin/perl
print "Content-type: text/html; charset=utf-8\n";
print "\n";
print "<!DOCTYPE html>\n";
print "<html><head><meta charset=\"UTF-8\"><title></title></head><body>\n";
print "<table>\n";
for $key ( sort keys %ENV ) {
print "<tr>\n";
print "<td><code>${key}</code></td><td><code>$ENV{$key}</code></td>\n";
print "</tr>\n";
}
print "</table>\n";
print "</body></html>";
exit;
ではこの CGI を実際に確かめてみましょう。
一般的な環境変数の一覧は以下のとおりです。
| Key | %ENV | 意味 |
|---|---|---|
| DOCUMENT_ROOT | /var/www/html | サーバのドキュメントルートのパス |
| GATEWAY_INTERFACE | CGI/1.1 | CGIバージョン |
| HTTP_ACCEPT | */* | |
| HTTP_ACCEPT_ENCODING | gzip, deflate, br | |
| HTTP_ACCEPT_LANGUAGE | ja,en-US;q=0.9,en;q=0.8 | ブラウザーの表示可能言語。二つ以上ある場合にはカンマ区切り。 |
| HTTP_CONNECTION | Keep-Alive | |
| HTTP_HOST | www.futomi.com | サーバのホスト名 |
| HTTP_REFERER | リンク元のURL | |
| HTTP_USER_AGENT | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 | あなたがお使いのブラウザーの種類・バージョンや、プラットフォームの情報が記載される。 |
| PATH | /usr/local/bin:/usr/bin:/bin | |
| QUERY_STRING | ||
| REMOTE_ADDR | 192.168.1.4 | あなたのIPアドレス |
| REMOTE_HOST | e139083.ap.example.jp | あなたのホスト名 |
| REMOTE_PORT | 1376 | |
| REMOTE_USER | BASIC 認証 (アクセス制限) を実施した場合にのみユーザー名が入る。 | |
| REQUEST_METHOD | GET | |
| REQUEST_URI | /lecture/env_var/exec/your_env.cgi | あなたがリクエストしたURI |
| SCRIPT_FILENAME | /var/www/html/lecture/env_var/exec/your_env.cgi | |
| SCRIPT_NAME | /lecture/env_var/exec/your_env.cgi | |
| SERVER_ADMIN | root@localhost | サーバの管理者 |
| SERVER_NAME | www.futomi.com | サーバの名前 |
| SERVER_PORT | 443 | アクセスしたときに使ったTCPポート番号 |
| SERVER_PROTOCOL | HTTP/1.1 | HTTP プロトコルのバージョン |
| SERVER_SOFTWARE | Apache | WWW サーバの種類 |
CGI でよく使う環境変数について詳しい解説を用意しましたので、ご覧ください。