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

Quid Pro QuoでSSIが動かない

発言者:りく
( Date Tuesday, January 18, 2000 01:32:58 )


はじめまして、まったくの初心者でマト外れなことをお聞きしているかもしれませんが、
よろしくお願いします。

「require "cgi-lib.pl";」というCGIに埋め込まれているSSIが全く動かないのですが
どうすれば動くようになるのか教えてください。
ちなみに、「〜.pl」はPerlだということはわかっているのですが、
具体的にどの形式で使用すればいいのでしょうか?
cgiのようにMacPerlでCGIスクリプトに変換させて使用するのでしょうか?


Quid Pro Quoを使い、スタンドアロンな状態でCGIのテストをしたいと試行錯誤を繰り返しています。
CGIはMacPerlで、すでに完成していて市販で配布しているものを使用しています。

CGI・日時を表わすなどのSSIは正常に動きます。
しかし、exec〜コマンドは動きません。
Quid Pro Quoのバージョンは、1.0.2や2.1.2、2.1.3の3種類を試してみたのですがどれもだめでした。
OSは、7.6.3と7.5.3の両方で試しています。

よろしくお願いします。

田中求之 さんからのコメント
( Tuesday, January 18, 2000 19:02:25 )

>CGIはMacPerlで、すでに完成していて市販で配布しているものを使用しています。

MacPerl で使うためのものとして配付されているということですね?
もし,UNIX の Perl 用でしたら,必ずしも MacPerl ではそのまま使えないのですが。

りく さんからのコメント
( Wednesday, January 19, 2000 02:12:00 )

>UNIX の Perl 用でしたら,必ずしも MacPerl ではそのまま使えないのですが。

市販のCGIには特にUNIX用という表示はありませんでした。
しかし、UNIX環境を前提に説明が書かれていたということは、
指摘のある通りそれが動かない原因かもしれませんね。

Macで使用するためには、改造が必要なようですが、
その改造方法を書いたホームページや書籍の名前を
お手数ですが、もし知っていたら教えていただけませんか?
もちろん、自分なりにMacPerlについて調べるつもりですが、
おすすめなところをよろしければ紹介お願いします。

寺港みやび さんからのコメント
( Wednesday, January 19, 2000 18:29:27 )

>おすすめなところをよろしければ紹介お願いします。
WSM(つまりここ)がおすすめです(^o^)y
サーチエンジンでperlなどとして検索してみれば
perlの初歩的な移植のノウハウはでてきますよ。



→  WSM メッセージ検索

りく さんからのコメント
( Thursday, January 20, 2000 00:25:50 )

>寺港みやびさん
ありがとうございました。
早速参考にさせていただきます。

Aran! さんからのコメント
( Monday, January 24, 2000 01:37:28 )

全くの初心者の質問で恐縮です。りくさんと同じで、SSIがうごきません。

MacPerl 5.0.4
Quid Pro Quo 1.0.2
NetScape 4.7
を使ってCGI,SSIの勉強を一昨日から始めました。

なさけないのですが、こんな簡単なことが出来ません。原因をおしえてください。

Perlプログラム:ファイル名 hello.pl
------------------
#! perl
print "Hello World!";
exit;
------------------

HTMLファイル:ファイル名 hello.shtml
-----------------------------------------------
<HTML><HEAD>Hello</HEAD><BODY>
こんにちは!<!--#exec virtual="hello.pl"--> ようこそ!
</BODY></HTML>
-----------------------------------------------
この2つのファイルをQuid Pro Quo本体と同じ階層に置き
NetScapeから  http:127.0.0.1/hello.shtml をアクセスすると、

こんにちは!ようこそ!

と表示されて、Perlで書いた部分が全く無視されてしまいます。
これで2日間悩んでいます(実際にはカウンターを入れようとして
いるのです)。

<!--#exec virtual="hello.pl"-->
のvirtualの部分をcmdに変えてもだめでした。いったいどうすれば
いいのでしょう?どなたか御教示ください。お願いいたします。

田中求之 さんからのコメント
( Monday, January 24, 2000 02:12:02 )

>Perlプログラム:ファイル名 hello.pl

Quid Pro Quo や WebSTAR で Perl の CGI を動かす時には、UNIX や Linux
で Perl の CGI を動かす場合とかなり勝手が違う部分があります。このため、
多々ある CGI の解説本を使って学習を行うときには、OS の違いに気をつける
必要があります。たいていの CGI の解説本は、UNIX 上での CGI の実装や
Perl の実行方法を前提として書かれていますので、そのままでは MacOS 上で
は通用しないことがあります。

まず、絶対に頭にたたき込んでおいて欲しいことは

 MacOS の Web サーバで Perl の CGI を動かすときには、Perl のスクリプト
 そのままの形(スクリプトを書いた .pl のファイル)ではだめだ!!

ということです。

MacPerl をインストールしなければならないことは当然なのですが、それ以外に

 MacPerl でスクリプトをいったん開いて、CGI 形式で保存しなければならない

という掟があります。

使いたい CGI のスクリプトを MacPerl で開いて、別名で保存を選び、ファイ
ル形式として CGI Script を選んだうえで、ファイル名を xxxx.acgi (拡張
子がacgi)の形で保存しなければなりません(すると、地球と玉のりするラク
ダのアイコンのファイルになるはずです)。

さらに、OS の違いを調整しなければならない(=スクリプトを MacOS に合わ
せて書き直さなければならない)ことがあるのですが、これは、OS の違いに
ついて理解しなければなりません。

まずは、MacPerl のパッケージの中の「MacPerl CGI」というフォルダーをご
覧ください。この中に、MacPerl でうごく CGI が入っています。英語ですが、
ドキュメントもあります(Perl に取り組む人の結構な部分が CGI がらみなん
だから、MacJPerl のパッケージでこのファイルは翻訳しておいて欲しいなぁ)。

また、この会議室のメッセージ検索(内容検索の方)で、MacPerl と CGI を
キーワードにして検索してみてください。参考になるメッセージがあると思い
ます。

Aran! さんからのコメント
( Monday, January 24, 2000 11:32:06 )

田中さま、解決しました。ありがとうございました!
私のミス:
その1。PerlのスクリプトをMacPerl CGI形式で保存はしたものの
拡張子は.plのままでacgiにしていなかった。
その2。これはほんとうにクダラないミスで、呼び出す方のHTMLの記述を
依然として、ファイル名.plとしていた。くくく、、これで30分悩んでしま
いました。

いずれにしても分かってしまえばどうってことないのですが、初心者には
乗り越えるのに時間がかかります。

Mac Quid Pro Quoでサーバーを動かし、MacPerlでCGIを書くときの教訓まとめ。
1. perlのプログラムは必ずMacPerlでcgiスクリプト形式で保存し、拡張子は
.acgiとする。

2. SSIを使う時、<!--#exec virtual="ファイル名.acgi -->
 とする。ポイントは、exec cmd ではなく、exec virtualとすること。

結局この2つだと思います。

おかげさまで解決しました。ばりばりCGIをテストしていきます。ありがとうございました。
Aran.