CGI
はじめに
CGI(Common Gateway Interface) は html(Hyper Text Markup Language) で構成されたホームページからサーバー上のプログラムを呼び出して、利 用者のデータをプログラムに渡すものです。プログラムは渡されたデータ を処理し、サーバーはプログラムからの結果をブラウザに返します。 これにより掲示板や訪問者リスト、アンケートフォームといった対話的な ホームページを作成する事が可能となります。
※Knetでは、CGI をご利用でないお客様を含めた全ての お客様に快適な環境をご提供していくため、CGI を条件付開放とさせて 頂いております。本規定に反する行為や他のお客様のご迷惑になる行為が 確認された場合、CGI のご利用をお断りする事がございます。
利用にあたってのご注意
- 弊社 CGI で使用できる言語は Perl(Practical Extraction and Report Language)のみとさせて頂いております。他の言語をお使いになって、 プログラムを構成する事は出来ません。
- WWW サーバーへ登録可能なプログラム本数を制限させて頂いております。登録本数の制限等をご参照下さい。
- お客様のディレクトリ内において CGI プログラムを起動する事は出来 ませんので、登録作業は弊社管理者による作業となります。弊社管理者が登録するディレクトリは、お客様のホームディレクトリとは別の場所になります。
- 登録作業時には、プログラムの中身を確認させて頂きます。サーバーに 高負荷を掛ける恐れのあるプログラムや禁止されているコマンドを利用しているプログラムは、登録をお断りさせて頂く事があります。
- データやログファイルなどを書き込むファイルは、プログラムを登録す るディレクトリではなく、お客様のホームディレクトリ内とさせて頂き ますので、ファイルパスの指定にご注意下さい。
- CGI プログラムを登録するディレクトリもホームディレクトリと合わせ て容量算出させて頂いておりますので、ご契約の容量を超えない様にご 注意下さい。
- 弊社では、CGI プログラムのデバック(修正作業)を一切行ないません ので、修正はお客様側で行なって頂きます。
- CGI プログラムの新規作成及び構成変更、修正作業を弊社に依頼されて 行なう場合は、有償サポートになりますので予めご承知おき下さい。 ただし、登録依頼、再登録依頼、削除依頼は無償で行ないます。
利用の制限等
- 登録後にサーバーへ高負荷を掛け、他のお客様にご迷惑をお掛けするプログラムを発見した場合、利用者に対して利用を制限させて頂く事がございます。また、強制的に撤去させていただく場合もございます。
- CGI プログラムの中でシステムコール関数等の使用を禁止させて頂いております。これらの関数はご利用になれませんので、ご注意下さい。
(例:chdir,chroot,system,exec,kill,umask,chown,mkdir,symlink, syscall,chmod etc..) - WWW サーバーがメンテナンスの為に停止する場合は、CGI もご利用にな れません。
- WWW サーバーでは、SSI の解放を行なっておりませんので、SSI をご利 用頂く事および SSI から CGI を起動する事は出来ません。
- CGI は、ディレクトリ概念及びプログラムに対する知識が必要となります。初心者の方は利用をご遠慮頂くか、予め知識を習得された上でご利用下さい。
登録本数の制限等
Knetでは、CGI をご利用でないお客様を含めた全てのお客様に快適な環境をご提供していくため、ご登録頂ける CGI プログラム の本数を制限させて頂いております。
WWW サーバーへ登録できる本数・・・・・・20 本まで
この本数は、管理者領域へ登録した個数でカウント致します。従いまして jcode.pl や cgi-lib.pl 等をお客様がご用意された場合には、カウント対 象となります。ただし、お客様のディレクトリ内に存在するデータファイ ルやログファイルはカウント対象ではありません。
万一、20 本を超えて登録が必要な場合には、別に用意させていただいた無保証型サー バーへ登録をお願い致します。20 本を超える WWW サーバー(保証型サー バー)への登録ご希望の際は、1 本あたり 500 円/(月額)を申し受けます。 無保証型サーバーをご利用の場合、別途費用は発生致しません。無保証型 サーバーに関するご案内は、関連ホームページをご参照下さい。
お客様のCGIが、弊社WWWサーバーに過度の負荷をかけている場合にはW3サーバーに移行してもらうことがございます。また、強制的に撤去させていただく場合もございますので何卒ご了承の程お願い致します。
無保証型サーバー
20本以内のCGIプログラムは従来通り、そのままご利用頂けますが、21本 以上のCGIプログラムの利用については、次のいずれかの方法に てご利用頂くこととさせて頂きます。
- (1) 現在使用しているCGIプログラムを20本以内にする。
すでに 不用となっているCGI 及びデータファイルが存在している場合はサポート宛に削除依頼のメールをお願い致します。 - (2) 21本以上のCGIプログラムを無保証型サーバー(w3サーバー)へ移動する。
- (3) 有償サービスを利用する。
引続き21本以上のCGIプログラムを従来の保証型サーバー上(WWWサーバー)でご利用頂くには1本につき月額500円をお支払い頂きます。
※尚、「保証型」と「無保証型」の違いは、バックアップを取るなどサーバーの環境について保証を受けられるかどうかの違いです。従いまして、無保証型のサーバーは無償でご使用頂けますが、弊社サポート対象外とさせ て頂いております。
ご利用の手順
準備
- (1) CGI を構成するプログラムに対してある程度の知識が必要となりますので、予め準備をお願い致します。
- (2) CGI のプログラミングでは、ディレクトリの概念を理解している事が絶対条件となりますので、絶対パスや相対パスに関して予めご理解の上でご利用下さい。
- (3) 弊社では開発環境を提供できませんので、お客様側に開発環境が必要となります。
- (4) html との連動がありますので html 言語をご理解の上でご利用下さい。
- (5) ブラウザの利用が円滑に出来、電子メールの送受信が出来る必要があります。
- (6) お客様のホームディレクトリの下に cgi-bin というディレクトリを作成しておいて下さい。
CGI登録依頼
CGI の登録依頼は下記の手順にてお願い致します。
- (1) 予めお客様側で設定、修正の終ったプログラムを 「準備」で作成しておいた cgi-bin ディレクトリの中に ftp で転送して下さい。 その際の転送形式は Ascii 又は Text 形式で転送して下さい。(画像 ファイルは Binary 形式で転送して下さい。)
- (2) サポート宛に登録依頼のメールを送って下さい。メールには、お客様の プログラムの置いてある場所とファイル名を明記し、必ず作業内容を添付して下さい。特にパーミッション(権限)の設定をお忘れなくお願い致します。
- (3) 弊社では、メール到着後プログラムの中身を確認し、登録作業を行ない ます。作業が完了しましたら、その旨メールでお知らせ致します。なお、 作業はメール到着順に順次行なっておりますが、依頼をお受けした時間 帯によっては翌日に持ち越される事もございますので、予めご了承下さ い。万一24時間以上経過しても作業完了の通知が来ない場合には、お 手数ですがサポートまでお知らせ頂けます様お願い致します。
- (4) 作業完了のメールが届きましたらお客様側で動作の確認をして下さい。 エラーが返され動作しない様でしたら修正をして頂き、再登録依頼をお 願い致します。
CGI 環境パス
1) Perl の指定
#!/usr/local/bin/perl
2) ライブラリの指定
2-1)日本語変換ライブラリ(jcode.pl)
・弊社の物を利用する場合
require '../cgi-lib/jcode.pl';
・お客様が用意される場合
require './jcode.pl';
2-2)入力データ処理ライブラリ
・弊社の物を利用する場合
require '../cgi-lib/cgi-lib.pl';
・お客様が用意される場合
require './cgi-lib.pl';
2-3) Sendmail の指定
/usr/lib/sendmail
3) CGI の起動パス例
・直接起動する場合
http://www.ksky.ne.jp/cgi-bin/users/アカウント/***.cgi
または
http://www.knet.ne.jp/cgi-bin/users/アカウント/***.cgi
・html から指定する
<form method="***" action="/cgi-bin/users/アカウント/***.cgi">
・プログラムから他のプログラムを指定する
"./***.cgi";
4) プログラムの中で画像ファイルを指定する場合
<img src="http://www.ksky.ne.jp/~アカウント/***.gif">
または
<img src="http://www.knet.ne.jp/~アカウント/***.gif">
5) データ(***.dat)やログ(***.log)、テキストファイル(***.txt)の指定
例:データファイル(***.dat)では、
・ダイアルアップ接続のお客様の場合
"/dialup/アカウント/cgi-bin/***.dat";
・ADSL接続のお客様
【KnetSuperADSLの場合】
"/adsl/アカウント/cgi-bin/***.dat";
【フレッツADSLの場合】
"/fadsl/アカウント/cgi-bin/***.dat";
・Bフレッツ接続のお客様の場合
"/bflets/アカウント/cgi-bin/***.dat";
・CATV接続のお客様の場合
"/catv/アカウント/cgi-bin/***.dat";
デバッグの手引き
1) CGI プログラムの中で変数をセットする行や print 文の行は注意が必 要です。
誤:$title = "Welcome to "Test CGI" Program"; 誤:print "<img src="http://..(中略)..">\n"; 誤:print "<body bgcolor="#ffffff">\n";
これら構文は代表的な誤りの例です。プログラムは、途中にある「"」 を解釈して $title = "Welcome to " までを変数と理解します。その為 残りの Program"; が理解できずにエラーを返します。また print 文でも途中の「"」までを print 文と解釈しますので、残り の部分を理解できずにエラーを返します。この様な場合は「\」を直前に付ける事で打ち消す事が出来ます。
正:$title = "Welcome to \"Test CGI\" Program"; 正:print "<img src=\"http://..(中略)..\">\n"; 正:print "<body bgcolor=\"#ffffff\">\n";
打ち消された部分は、文字「"」として認識されますので正しく動作する 様になります。
2) メールアドレス「@」の利用には注意が必要です。
誤:$mailto = "example@knet.ad.jp";
これは代表的な誤りの例です。プログラムは「@」を配列として認識しま す。その為、配列を理解できずにエラーを返します。
この様な場合は「\」を直前に付ける事で打ち消す事が出来ます。
正:$mailto = "example\@knet.ad.jp"; または 正:$mailto = 'example@knet.ad.jp'; …変数の展開をしない場合はシングルクォートで囲む
打ち消された部分は、文字「@」として認識されますので正しく動作する 様になります。
3) 文法のチェック
UNIXやLinuxサーバーなどのテスト環境がある場合、またはWindowsの場合でも、Perlがインストールされた環境があれば、サーバーにアップロードする前に、プログラムの文法に誤りがないかをチェックする事ができます。
Windows環境の場合、コマンドプロンプトにて、次のように操作します。
C:\………(略)……… >cd [CGIファイルのあるディレクトリ] [Enter] ↑↑↑ CGIファイルの場所に移動します。 C:\………(略)……… >perl -cw [CGIファイル名] [Enter] ↑↑↑ 「perl -cw 」の後にファイル名を指定します。 [CGIファイル名]syntax OK ↑↑↑ 結果が出力されます。
エラー出力がなくなり、「syntax OK」と表示されるまで、修正・チェックを繰り返し行ってください。