moto さんへ追記。
「ソースの先頭部分」というのは #! 行のことではないのですね。
前の私の #!云々は取り消します。
moto さん、
動いたそうなのでいいのですが、IISではソース先頭の #! 以下のパスは無視すると思います。
これからも何かあったらおたずねください。IISの詳細は知りませんけど。
中田さん、ぴゅあさん(先日の投稿でカタカナになっていました。すみません)
ついに、IISでのCGI動きました。(たった今さっきです!)
やはり、IISでの”perl.exe”と”.cgi”の関連つけの設定と、ソースの先頭部分の
パスの切り方がちゃらんぽらんでした。
本当にありがとうございました。(でも、これからが大変かも(^^;))
moto さん、
ASPとCGIは動作が基本的に違うので、PerlのスクリプトをCGIとして動作させるのであれば拡張子は .cgi(または .pl)にしてください。
PerlScript で動かすならまた別ですが。
IISで実行時のカレントディレクトリがCGIファイルのあるディレクトリではないというのは結構有名な話らしく、CGI-MLなどでは、CGI中のファイルパスの指定は絶対パスで書くのがよいという助言をする人が多いようです。
このあたりはすべてのHTTPサーバで同じになるということはないでしょう。まったく同じならそれぞれのサーバの存在価値がないでしょうし。まあ基本は同じと言えば同じなので応用のきく範囲内かな、と思っています。
IIS/PWSについては、昔ながらのCGIなど使うな、ということなのだろうと思います。
dbm はバイナリファイルですし、dbmの違い(ndbm, sdbm,..)とバイトオーダの違いなどがあるので、UNIX 間でもそのままは使えないことはあるようです。
>motoさん
IISを見てみたときのことを書いておきます。
CGIは拡張子もそのまま(.cgi)で良い筈です(拡張子の関連付けみたいなのがあったりする
のかもしれませんが/特に何も言ってませんでした)。
ちゃんと動いています(許可を得てないのでそれをお見せすることはできませんが)。
問題となるのは先に書いたパスの部分だけ。
ただなんか動きが変というのはありましたけど(タグが出力される順番が変)。
中田さん、ぴゅあさん、ご報告遅れまして申し訳ありません。
ただいま、中田さんや、ぴゅあさんがおっしゃっていた内容を
いろいろ試行錯誤し試しております。
ただいまの現状は、パールのプログラム自体動いている?ようなのですが、実行結果
と、ソースの内容がいっしょに表示されるような状態であります。
(拡張子をCGIからASPにかえました)
まだまだ、理解が足りないので皆さんにうまく説明できませんが、
私なりに勉強し、又ご報告したいと思います。
中田さん、ぴゅあさん本当にありがとうございます。
それでは、また!!
★IISでのCGI利用に付いて補足
その後解決されたのかどうかの報告がきていないようですが前回IISでCGIが正しく動作しな
いということで見てあげたこととそのCGIがUNIXサーバで動かないということで先日見てあげ
たことからの情報の一部です。AN HTTP Serverとは関係ありませんがIISに関しても上がって
いるので挙げておきます。
☆IISの変?
データファイルなどのパスはAN HTTP ServerではUNIXサーバと同様に相対パスが使えます。
その意味ではAN HTTP Serverを使うとローカルテスト後比較的すんなりとUNIXサーバに移行
できるものと思います(その逆も同様/Win95/98ではちょっと手間が掛かることがありますが)。
IISでは相対パスで指定する場合ドキュメントルートか何かを基準にして相対パスを書かなけ
れば正しいパスが得られない「場合が?」あるようです。
従ってIISで動いていたものをAN HTTP ServerやUNIXサーバに移行する場合やその逆の場
合には注意が必要と思われます。尤も友人のIISの設定に問題があったのかも知れませんが。ち
らっとIISを動かしてみようと思ったものの資料なしではすぐには操作方法をつかめなかったの
で詳しくは調べていませんが。
あと相談の際にもうひとつあった点としてIISからUNIXサーバへの移行時にデータベース
(dbmopen/dbmclose,tie/untie)を使っていたのですがWin上で作ったものをそのままUNIX上
へファイルコピーしても使えません。一度テキストファイル等に吸い上げてUNIX上で作りなおす
必要があります。ファイルシステムが違うので当然ですよね。これはAN HTTP Server,IIS共に
言える注意点の筈です。結構これが判らず泣いていたようなので。データベースは使ったことが
ありませんでしたが適当にスクリプトを書いてみて解決しました。
IISの設定については、とほほのCGI入門の中のWindowsNTでのCGIについてあたりが参考になると思います。
>motoさん
IISでPerlを使っている友人が居て聞けば判るかなと思ったんですけどActivePerlを入れてな
いとダメという話を聞いてあまり詳しくはないようでしたが話をしているうちふと思ったことが。
インストールしたのはもしかしてPerl for Win32だけでは?ISAPIを入れてないのではないの
でしょうか。ActivePerlで動いているということは(ActivePerlには最初からISAPIが入って
いた筈と思うので)Perl for Win32(つまりPerl.exe)で動かそうとしているのではないのか
なと思ったり。
確かPerl for Win32ではなくてISAPIをインストールしたときにIISを見つけたとか見つから
なかったとかメッセージが出ていた筈(Perl for Win32ではなかったと思う)と記憶していま
す。この辺文書化しようと思ったままなので詳しくは覚えていませんがどちらかでメッセージが
出ていたことは確かです。確か以前中田さんもIISはISAPIがインタフェースになっていると
言っていたような言っていなかったような?
もしPerl for Win32を使われているのでしたらISAPIをインストールしてみるかActivePerl
に変えてみるとかしてみてはどうでしょうか。
ただ。。。。
AN HTTP Serverで動いていたCGI(Perl)がIISだと変な動作をするので見て欲しいと言われ
ましたが相対パスの設定がなんか変でした(意味不明の設定の仕方をしてやらないと正しく処理
されない/当然充分にテストされAN HTTP Serverやプロバイダのサーバ上では完璧に動作して
いるものです)。
なおActivePerlをインストールする以外はIIS側での設定は特に無かったそうです。
moto さん、
IISの設定についてはちょっとわかりませんが、
Perlスクリプトがperl.exeで動くように設定されているでしょうか?
また、CGIを実行できるところに置く必要があったと思いますが、それは大丈夫でしょうか?
中田さん、皆様、はじめまして!!
motoともうします。
AN HTTP ServerをDLさせてもらいました。ありがとうございます!。
会社のPCにインストールし、無事CGIのプログラム動きました。
そこで質問なのですが、AN HTTP Serverで動いたcgiのプログラムをwindows2000serverで
IISをインストールし動かしてみたところ、内部サーバエラーでCGIが動きません。
私、まったくの初心者でいろいろ本等を読んでいるのですが良く分かりません。
もしよろしければどこが足りないのか教えていただけないでしょうか?
宜しくお願いいたします。