ここではコンソールで”Success CGI!”と表示したPerlで作ったplファイルの内容を以下の2点だけ変更して表示させてみましょう。
A)1行目に記述したPerlのパスを確認・設定
B)拡張子の確認([ .pl ]で実行可能かどうか等)
これだけです。
まず、A)については、あなたのローカル環境とサーバでは、OSやのPerlの実行ファイルのある場所もほとんどの場合異なるはずなので確認と変更が必要です。
多くのサーバでは、
#!/usr/local/bin/perl
または
#!/usr/bin/perl
のいずれかででしょう。
利用するホームページ公開スペースのサイトで『CGI設定』や『サーバ環境』、『サーバ仕様』といった説明があるはずですので、それに沿って設定して下さい。
B)は、Perlが利用できるサーバであることは大前提ですが、(特に無料レンタルでCGIが利用できる場合など)サーバによってはCGIが利用できるディレクトリ(/cgi-bin/など)が決まっていたり、実行可能なファイル名の拡張子が決まっているなどでPerlスクリプトファイルの一般的な拡張子である[ .pl ]ではなく[ .cgi ]でなければ実行できないなどのルールがある場合がある為です。
小額でも有料サーバではこうした制約はないはずですし、中にはCGIが利用できる無料レンタルサーバでもこうした制約のないものもあるようです。
というわけでA)前回画面に出力した際のファイル(test.pl)の1行めを
#!c:¥perl5¥bin¥perl
から
#!/usr/local/bin/perl
などに変更します。
#!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<html><body>\n"; print "Success CGI!\n"; print "</body></html>"; exit; |
サーバで拡張子.plのファイルを実行できる場合はこれで終わりですが、例えば.cgiなど決まった拡張子がある場合には、サーバ指定通りに変更します。
次は、出来上がったファイルをCGIを実行できるサーバ上のディレクトリにFTPソフトやサーバでファイルマネージャが用意されていればそれを使ってアップロードします。
例えば、cgi-binというディレクトリにアップロードした場合にはURL上のパスは下記のようになるはずです(この時点ではまだ実行はできません)。
http://あなたのホームページアドレス/cgi-bin/test.cgi
因みに「『cgi-bin』というフォルダにCGIファイルを置いてください」と説明があるにも関わらず、初めはこのフォルダが存在しない場合も多々あるようです。
その場合は、ご自分の端末(PC等)ではなく、「ホームページスペースのあなたのホームページアドレスの下に『cgi-bin』というフォルダ」を作成して下さい。
ローカル(自分のPC)にフォルダを作ってアップロードしてもいいですし、FTPソフトのサーバ側で右クリックやアイコンをクリックすると新規フォルダを作成できると思います。
※これは、
といった理由からだと思われますので「なんでないんだ!」なんて怒らないで下さいね。
というわけで実行できるようになるまであと少し、残りの流れとしては次の4点です。
1.ディレクトリのパーミッションを確認
→必要があれば変更
2.ファイルのパーミッションを確認
→必要があれば変更
3.ブラウザを開く
4.test.cgiまでのURLをブラウザのアドレス欄に入力して[Enter]
パーミッションの変更は、たいていの場合ファイルをサーバにアップロードするFTPソフトで「サーバ側の/cgi-bin/」、「サーバ側のtest.cgi」をそれぞれ選択して右クリックすると出てくるメニューから[属性]や[属性変更]などのメニューを選び設定できるようになっています。
この時、設定されるべきパーミッションの設定値はレンタルサーバの場合で別途指定があればその指定によりますが
ディレクトリについては[755]や[705]、[711]や[701]
ファイルについては[755]や[705]
等になっていれば実行できると思います。
尚、次のようなエラーメッセージが出力されたら、たいてい1行めのPerlパスの記述ミスかパーミッションに起因するエラーです。
500 Internal Server Error
これはHTTPエラーNo(番号)とそれに対応するメッセージですが、以下のようなメッセージなら、ほぼ(タイプミス含む)ファイルパスの間違いです。
404 Not Found
いかがですか?ブラウザに”Success CGI!”と表示されましたか?
「どうしてもできない!」という方は↓コチラへどうぞ。
表示された場合には、
ターミナルエミュレータ(TeraTerm他)を使ってサーバ上で実行