このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

MACサーバでCGIを動かす際の疑問です。

発言者:Shinya
( Date Tuesday, July 29, 1997 12:18:10 )


Macでサーバーを運用し、CGIを使ってみたいのですが
疑問に思う事がありまして投稿させて頂きました。

よく書物などに載っているスクリプトで
頭に
#!/usr/local/bin/perl
という記述があると思うんですけど、このパスは必要なのでしょうか。
また、これが何を意味しているのかがよくわかりません。
この
#!/usr/local/bin/perl 最後のperlというパスはそのディレクトリ
にperlというものが存在していますよという意味なのでしょうか。
Macperlをそのディレクトリに置くという事なのでしょうか。

書物にはCGIがうまく作動しない場合、この
#!/usr/local/bin/perlというパスがあっているかどうかを確認
しなさいと書いてあるのですが、意味がわからなくて非常に困っています。

いろいろと書物を漁ってみたのですが、解決の糸口が見いだせません。
ちなみにサーバにはNetPrezents4.01J、Macperl5.0.7を入れています。
perl初心者です。お助けください。

田中求之 さんからのコメント
( Tuesday, July 29, 1997 13:56:34 )

>よく書物などに載っているスクリプトで
>頭に
>#!/usr/local/bin/perl
>という記述があると思うんですけど、このパスは必要なのでしょうか。

UNIX で Perl のスクリプトを走らせるときには必要なのですが、
MacPerl でスクリプトを動かす場合には必要ありませんよ。

そのかわり、MacPerl による CGI の場合、テキスト形式で保存された
スクリプトを CGI として走らせることはできません。MacPerl でスク
リプトを CGI 形式で保存すれば、CGI として走るようになっています。

OS の違い(UNIX と Mac)には気をつけてください。

Shinya さんからのコメント
( Tuesday, July 29, 1997 15:28:40 )

CGIスクリプト形式で保存すればいいのですね。ありがとうございます。
さっそく実践した所(ネットスケープにて認識させた所)

種類"application/octer-stream"のファイル"〜.cgi"の
ダウンロードをはじめてます.....

このようにダウンロード画面になってしまうのは何故なんでしょうか。
サーバ側に問題があるのか、FTPでPUTする側に問題があるのでしょうか。
度々、申し訳ありませんがアドバイスをお願いします

Shinya さんからのコメント
( Tuesday, July 29, 1997 16:26:47 )

MacBinallyでputしたら、ダウンロード状態は回避されてCGI実行
までいったのですが、
---------------------------------------------------
Server: NetPresenz/4.0.1J 

Diagnostic Output

# # Can't find string terminator "END_MULTIPART" anywhere before EOF.
File ':cgi-lib.pl'; Line 119
----------------------------------------------------
このようなアラートが出てしまいました。

実行したスクリプトとHTMLは

name.html-------------------------------------------
<html>
<head><title>Please input your name</title></head>
<body>
なまえを半角ローマ字で入力してください。
<form action="name.cgi">
<input type="text" name="you">
<br>
<input type="submit">
<input type="reset">
</form>
</body>
</html>
----------------------------------------------------

name.cgi--------------------------------------------
require "cgi-lib.pl";
&ReadParse;

print "Content-type: text/html\n\n";
print "<html>\n<head>\n<title>your name is...</title>\n
</head>\n<body>\n";
print "OK! You are ";
print $in{"you"};
print ".\n";
print "</body>\n</html>\n";
-----------------------------------------------------

上記のファイルと cgi-lib.pl というファイルを
同ディレクトリに置いて実行させました。

Shinya さんからのコメント
( Wednesday, July 30, 1997 00:30:01 )

上記の件なんですが、解決しました。〜.plというものはlibに入れるのですね。
ちなみにNetpresenzからMacHTTPに変えることにしました。
ありがとうございました。