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

cgi-lib.plを配置することの必要性について

発言者:morimoto
( Date Tuesday, January 18, 2000 18:13:24 )


いつも勉強させてもらっています。cgi、java、webmasterの統一的理解をすす
めるにあたって是非とも取り入れてみたいcgi scriptがあったのですが、内容
においてcgi-lib.plを配置せよとのことでmacperlからcgi-lib.plを取り込ん
だのですが、webstarのどこに配置すればよいのでしょうか、それとも必要な
いのでしょうか。
cgi-binフォルダーに入れてテストすると
Can't locate .cgi-lib.pl in @INC.と表示されてしまいます。いろいろな場
所に配置してみたのですがだめです。必要ないのでしょうか。なければ、
scriptからその文字列をいかように削除すべでしょうか。勉強のつもりでやっ
ているのですが、何か参考になるご意見を頂けますようお願いします。

*webstar3.0です。マニュアルもよく読んだつもりです。

田中求之@出張先 さんからのコメント
( Tuesday, January 18, 2000 18:57:25 )

出張中で満足にネットにアクセスもできない状況なのですが、この件については
別の発言でもお尋ねになっていましたので、簡単に。

cgi-lib.pl は、Perl のスクリプトの中で読みこまれて実行されるライブラリ
ですので、もし必要なのであれば、MacPerl のライブラリとしてパスを通して
おく必要があります。

つまり、簡単に言うと、MacPerl での設定の問題です。
(詳しい方のフォローを期待します) (^_^;;

ショージ さんからのコメント
( Tuesday, January 18, 2000 20:48:11 )

MacPerlでは必要なライブラリはMacPerlフォルダのlibフォルダに
コピーします。ここにあるライブラリはパスの指定をせずに利用す
ることが可能です。

また,libフォルダにコピーしない場合は,直接パスを指定してや
れば問題ありません。CGIスクリプトの中で次のコマンドを追加し
てください。

require ':cgi-lib.pl';

これはCGIプログラムと同じ場所に置いた場合で,UNIXのperlでは

require './cgi-lib.pl';

としているのと同じです。Macintoshではファイルパスの区切り文
字に「:(コロン)」を使い,UNIXでは「/(スラッシュ)」を使う
という違いです。

もしもlibフォルダ以外のところにもモジュールを置きたいという
ことであれば,MacPerlのEditメニューのPreferenceでLibraries
という項目を設定してください。Add Pathとしてやればよいです。

また,宣伝すると気を悪くされる方がおられるかもしれませんが,
ファイルメーカーメーリングリストに参加されている方からのご
提案でMacPerlメーリングリストを始めました。よろしければ,ご
参加ください。

→  MacPerlメーリングリスト

morimoto さんからのコメント
( Wednesday, January 19, 2000 13:13:46 )

早速MLには入会させていただきました。
:と/については、以前のLOGや勉強で\rと共に理解していましたが、どういう訳か/で我がサーバーは動いてしまいます。もちろん動かないscriptの文字列
もありました。
とにかくいろいろ試してやってみてまたご報告します。
有難うございました。

ショージ さんからのコメント
( Wednesday, January 19, 2000 16:12:08 )

> どういう訳か/で我がサーバーは動いてしまいます

「/」で動いているのは

 $img_dir="/images/";

みたいなURLの指定の部分じゃないでしょうか。これがわかりにくいCGIプログラムもあったりするんですけどね。

基本的にファイルのオープンをしていなければ,ファイルやディレクトリの指
定ではありませんから,気にしなくても良いと思います。

 open(LOG, "< $log_file");

なんていう行があれば,$log_file は "Macitosh HD:CGI:LOG:cgi.log" とか
いう指定になっていなければいけないでしょう。

# 具体的なCGIがないと説明も難しいですね(^_^;