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 が提供している環境変数操作用モジュールの機能も利用できません。したがって、新規に環境変数を定義できませんでした。 |
|