▼9-1 はじめに・・・ |
CGIを使いたいという人はたくさんいると思いますが、CGIを自分で作ろうという人は、
あまりいないでしょうね。ほとんどの人は、Web上で公開されているフリーのCGIスクリプト
をもらってきて設置すると思います。
なので、ここではCGIの設置方法について解説します。 ・・・と、ここでチョットした注意なのですが、皆さんファイルの拡張子は表示する設定になっていますか? 試しに、テキストファイルを新規作成してください。ファイル名にxxx.txtのように拡張子 .txtが表示されていればOKです。 CGIを設置するときには、拡張子を変えることがあるので、拡張子を表示する設定にしておきましょう。 ちなみに設定の仕方ですが、Win98では
|
▼9-2 CGIの使える場所を探そう |
まずは、CGIスクリプトを置く場所探しから始めましょう。
下の1〜3のように、いくつかの方法があります。
|
▼9-3 欲しいCGIスクリプトを探そう |
CGIを置く「場所」が見つかったら、今度は置く「モノ」を探しましょう♪
これにも、いくつかの方法があります。
|
▼9-4 Perlのパスを設定をしよう |
普通CGIスクリプトは圧縮して配布されているので、まずダウンロードしたファイルを解凍します。
そして、CGIファイル(拡張子が .cgi)になっているファイルをメモ帳などで開いてください。
すると、1行目に #!/usr/local/bin/perl という行がありませんか? これがPerlのパスと呼ばれるものです。 このPerlのパスはサーバーによって違うのに、これがあっていないとCGIは動きません。 なので、自分で直す必要があります。 Perlのパスについては、サーバーのホームページに行けば、普通載っています。 CGIについて書かれている所や、Q&A等を探してみてください。 見つけたら、この1行目をそのままサーバーの指定通り書き直せばいいだけです。 ここで、「#」の前にスペースが入らないように注意してください。 |
▼9-5 最低限の設定をしてアップロードしよう |
Perlのパスの設定が終わったら、次に最低限の設定をしましょう。
CGI作者の方が、「必ず設定してください」と書いてある部分だけ、指示に従って書き換えます。
中には、何も変更しないでそのままアップロードしても使える設定になっているCGIもあるので、
その場合は変更の必要はありません。
ココで重要なのは、初心者の場合は必要以上に設定項目を変えないことです。 これは、もしエラーが起こったとき、設置法が悪かったのか、設定の際にミスをしたのか分からなく なってしまうからです。 ここはグッと我慢して、とりあえずアップロードしてみましょう。 一度動かした後でも、設定項目は変えられますよ♪ あと、よく「空のdata.log」を用意してください。と書いてある場合があります。 この場合は、まず空のdata.txtを作って、この拡張子を.txt→.logに変えればOKです。 (拡張子を表示する設定にしておくのはこのためです。) 次に、アップロードの説明です。 アップロードはいつも通りFTPソフトを使ってアップロードするのですが、いくつか注意点があります。
|
▼9-6 パーミッションの変更をしよう。 |
パーミッションとは何か?というのは、8-3 パーミッションとは?を参考にしてください。 ただ、配布されているCGIの場合には、 どのファイルをどのパーミッションにすればよいかは書いてあります。 配布しているページやCGIファイルを探してみてください。 例えば、 yybbs.cgi [755] yybbs.log [666] jcode.pl [644] [ ]内がパーミッションと指定されたとします。そうしたら、次にパーミッションの変更画面を開きます。 これはFTPソフトによって違いますが、FFFTPの場合には「ファイル上で右クリック→属性変更」 を選択すればOKです。 上の例では、yybbs.cgiは3つの実行にチェックを入れて、パーミッションを755にします。 また、yybbs.logはグループとその他の「書き込み」にチェックを入れてパーミッションを666とします。 ちなみに、アップロードしたときの初期パーミッションは644なので、パーミッション644と指定されている場合には、 何も変更しないでOKです。 |
▼9-7 時間がずれるんですけどぉ… |
掲示板を設置して、いざテスト投稿をしてみると、投稿時間がずれているという経験をした人もいると思います。
というわけで、その修正法です。 1) 1時間単位でずれている場合 これは、時差の設定がCGI作者がしたものと、サーバーのものがずれているためです。 CGIスクリプトには、次のような部分があると思います。(エディタの検索機能を使って探してください。 $ENV{'TZ'} = "JST-9"; これは、時差を日本時間(-9時間)にあわせていると言う意味なので、 $ENV{'TZ'} = "JST-10"; のように変えれば1時間進みます。 2) 1分単位、1秒単位でずれている場合 この場合には、サーバーの時計がずれている可能性が高いです。 時間を修正するようメールやサポート掲示板でお願いするのが良いと思いますが、それが嫌な人は次のように修正してください。 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); まず、スクリプト中から、上のような記述をさがします。3分進めたい時には、次のように修正します。 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time + 3 * 60); このように、(time±時間)としてあげればOKです。 ここで3分ずらすのに「3 * 60」としているのは、この「時間」は秒単位で指定するためです。 つまり、「2 * 60 * 60」とすれば、2時間ずらすことができます。1時間単位でずれていても $ENV{'TZ'} = "JST-9";のような記述が見つからない場合は、この方法を使ってください。 |
▼9-8 文字化けするんですけどぉ… |
掲示板を設置して、いざテスト投稿をしてみると、投稿時間がずれているという経験をした人もいると思います。
というわけで、その修正法です。 1) ページ全体が文字化けしている場合 CGIの文字コードは、シフトJISかEUCで書かれることが多いのですが、 これとブラウザが解釈した文字コードが違った可能性が高いです。 CGIが生成したHTMLのソースを見てみましょう。ヘッダー部分に <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> (シフトJISの場合) <META http-equiv="Content-Type" content="text/html; charset=EUC-jp"> (EUCの場合) という、文字コード指定がありますか? 無い場合には追加してあげましょう…と言いたいのですが、CGI作者によってヘッダー部分の書き方が違うので 「こうしてください」と書くことはできないんですよね。 どうしてもムリだったら、サポート掲示板等で質問することをオススメします。 2) 部分的に文字化けしている場合 文字コードがシフトJISの場合、「申、噂、表、十」のような特定の文字を使うと文字化けをしてしまいます。 文字化けを防ぐには、これらの文字の後ろにエスケープ文字「\」をつける必要があります。 例えば、表示するの場合 print "表示する"; → print "表\示する"; このように修正すれば文字化けは解消されます。 3) 半角カナが使われている場合 こればっかりは、投稿者に半角カナを入力しないよう、お願いするしかないです…。 |