Delphi Programming / Object Pascal
[掲載 2022年05月31日] [更新 2022年05月31日] Delphi 一般・その他 [未分類 - OS の操作等] |
HTTP サーバの環境変数 |
動作確認等 |
Windows 7 U64(SP1) + FireFox 88.0.1 (64 ビット) |
HTTP サーバ (Web サーバ) の環境変数を,CGI (本ページでは perl 言語を使用) で取得する例です.
この環境変数は,CGI や PHP で使用することがあるので,CGI 環境変数,あるいは PHP サーバ環境変数と言うこともあります. |
01_ HTTP サーバの環境数取得用の CGI を作成 |
以下のコードをテキストエディタで作成し,拡張子を .cgi にして保存します.保存のコードページは UTF-8N (BOM なし) にします. |
リスト1
テストに使用した CGI のコード.UTF-8 で保存 |
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "<html>\n";
print "<head>\n";
print "<title>環境変数取得</title>\n";
print "<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>\n";
print "</head>\n";
print "<body>\n";
print "環境変数一覧表示テスト<br>\n";
foreach $key (keys %ENV) {
print "$key : $ENV{$key}<br>\n";
}
print "</body>\n";
print "</html>\n";
保存したファイルを Web サーバの,CGI が実行可能なディレクトリ内に転送します.筆者が使用しているレンタルサーバでは,任意のディレクトリで CGI を実行できます.今回は cgis というディレクトリを作成して,CGI ファイルをそのディレクトリ内に置きました.
CGI ファイルのパーミッションの設定で [読み込み] と [実行] を設定します.この設定をしないと GGI が実行できません.500 internal server error が発生します. |
|
図1
CGI のパーミッション |
02_ CGI を実行して HTTP サーバの環境変数のリストを取得 |
下図は実行結果です.ウェブブラウザに表示しています. |
|
図2
環境変数のリストを取得 |
以下のように,sort コマンドを使用すると,環境変数の名前でソートできます. |
リスト2
テストに使用した CGI のコード.UTF-8 で保存 |
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "<html>\n";
print "<head>\n";
print "<title>環境変数取得</title>\n";
print "<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>\n";
print "</head>\n";
print "<body>\n";
print "環境変数一覧表示テスト (ソート)<br>\n";
foreach (sort keys %ENV) {
print "$_ = $ENV{$_}<br>\n";
}
print "</body>\n";
print "</html>\n";
特定の環境変数の値だけを取得するには,例えば次のような CGI で可能です. |
リスト3
テストに使用した CGI のコード.UTF-8 で保存 |
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "<html>\n";
print "<head>\n";
print "<title>環境変数取得</title>\n";
print "<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>\n";
print "</head>\n";
print "<body>\n";
print "環境変数取得テスト<br>\n";
$key = "SERVER_SOFTWARE";
$envvalue = $ENV{$key};
print "$key : $envvalue";
print "</body>\n";
print "</html>\n";
上の CGI の実行結果です.SERVER_SOFTWARE という環境変数の値が Apache となっています.これは,CGI プログラムを起動した Web サーバソフトウエアの名前です. |
|
図3
特定の環境変数の値を取得 |
HTTP サーバに新しい環境変数が定義できれば,Google Maps API のキーのように,他人に見られたり読まれたくない値を隠すことができます.新しく定義した環境変数は,その環境変数が存在するサーバで,環境変数取得用のプログラムを実行しなければ取得できません.このことを利用します.以下の最初のリンクの記事を参考にしてください.
筆者が利用しているレンタルサーバでは,HTTP サーバの環境設定ファイル (Apache の環境設定ファイル) を操作できません.また,Apache が提供している環境変数操作用モジュールの機能も利用できません.したがって,新規に環境変数を定義できませんでした. |
|