• ベストアンサー

IISでエラー、Apachでは動くのに…。

初めてCGIでプログラムを作成しました。 自分の環境(Apach)で動くので、それを客先(IIS)に持っていったら、動かない! 大変困っています。 Apachで動くのに、IISでは動かなくなる理由とは、何があるでしょうか。 今、自分の環境をIISにして調べようとしていますが…。 IISの設定も大変ですね。 作成したプログラムは「ご意見」を入れるフォームをCGIで動かして、csvに書き出すものです。 まずhtmlで、「意見を述べる」ボタンを押すと、Submitボタンのactionで対象cgiを呼び出すようになっています。 呼び出されたcgiは意見を入れるフォームが表示され、入力ボタン→確認画面・確認ボタン→csvへの書き込み+ありがとうございました画面の表示。 と、流れていく予定なのですが、 客先で入れようとしたとき、この最初のhtmlのボタンを押した時点で、 『ダウンロードしますか?』が表示されてしまい、 『保存』を押すと、対象CGIを保存しようとし、 『開く』を押すと対象CGIのソースが表示されるようです。 なぜ? 何か原因に心当たりのある方おられたら、ぜひ何か教えていただけると、非常にありがたいのですが…。  どうぞ、よろしくおねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.6

念のため再度確認しますが 1.『開く』を押すと対象CGIのソースが表示されるんですよね? 2.実行結果が入っているのではないですよね? つまり1.だと print"test"; のようになり 2.だと test だけが入っていることになります。 うちで確認しましたが/htmltest/でマッピングと実行アクセス権を設定すると、新たに設定することなく /htmltest/1/でも/htmltest/1/2/の中でもCGIは動きます 質問者さんのケースではenquete/enquete.cgiは動くのでしょうか? あるいは既にfileごと削除されているのかな? >●質問1. CGIを動かす必要がなくなったのなら実行アクセス権もマッピングも両方とも消すのでは? で、Apacheで例えると ・マッピングは AddHandler cgi-script .cgi に相当するものです ・IISの実行アクセス権付与は Options ExecCGI に相当します >質問2. IISマネージャで規定のwebサイトを右クリックしたときに 開始と停止の項目のどちらが黒く(有効に)なってますか? 開始の方が黒くなっているならIISは停止した状態です もしかして他のhttpd(Apacheとか?)がinstallされていませんか? その場合はどちらかのport番号を変えないと正常な動作はしませんが

marie77
質問者

お礼

ありがとうございます。 また明日、がんばってみます。 なんだか要領を得ない質問に、丁寧に応えてくださり、本当に感謝しています。 あの、質問していますが、「余裕があったら」、で結構です。 本当にここまでありがとうございました。 この質問をするためgoo登録したかいがありました。

marie77
質問者

補足

開くを押すと対象CGIとおぼしき、CGIのソースが表示されるとのことです。 すみません。『質問をしているクセに』ですが、入れに行ったのが、私ではなくて、別の人なので、その人からこんな状態になっちゃったよ!と聞いています。 ただ、単純なhtml→cgiですので、そのcgiくらいしか呼び出されるものはないので、ソレのソースが表示されていると思います。 ですので、あまりハッキリした事は、実際に見てみるか、明日相手に聞いてみないとわからないのですが、 enqueteファイルに入れるiken/iken.cgiという形で作って、といわれたので、フォルダもenquete.cgiもフォルダに存在していると思います。 あやふやなことの多い質問でホント、申し訳ないです。 が、つきあってくださり本当にありがとうございます。 質問2ですが、的確なご指摘だと思います。 昨日自分の環境でIISを入れようとし、Apacheを止め、途中で断念。 今日マッピングして見ると動いた!ので、「うごくじゃ~ん、」と嬉しくなっていたのですが、 コンパネ>管理画面でよく見ると、ご指摘の通りApacheが開始になっていたので、改めて「停止」させて、cgi動かそうとしたら、動かないです。ショック。 あ。「開始」が黒い。 Apacheをアンインストールしないといけないか、と思っていたのですが、アンインストールしないでもためせますか? ポートの変更!?というのが大事なのですか? portの番号はデフォルトの80ですが、番号は何でもいいんでしょうか…。

その他の回答 (6)

回答No.7

客先の方は不確定要素が多いので確認されないと話が進みませんね。 で、portの件ですが2つのhttpdを入れる場合は 片方を80にしてもう片方を8000以降の任意の数値にするのが慣例です(例えば8080とか、3つ目を入れたら8090とか) APACHEを変更の場合はhttpd.confの Listen 80 と言う行を Listen 8080 に書き換えてサービスマネージャで再起動します (古いバージョンのApacheではListen 80ではなく port 80 と言う行) IISを変更するにはIISマネージャの既定のwebサイトを右クリックして「webサイト」タブ>tcpポート欄を書き換えてから再起動です port自体の意味については検索エンジンなどで調べてみてください

marie77
質問者

お礼

ありがとうございます!!!

marie77
質問者

補足

補足というか… お礼です。 今日客先で見たら、結局CGIのパスの書き方の問題だったらしく、cgiの中で呼び出すファイルの書き方を D:hoge/hoge.html のように書いたら、うごきだしました。 自分を呼び出す場合は ./hoge.cgi ではないとダメでした。 とまれ、 色々な可能性を検討していただき、たくさんのアドバイスをいただき、大変感謝しています。 ちゃんと動いたことはもちろん、色々と勉強になりました、ありがとうございます! 本当にありがとうございました!

回答No.5

>客先は一体何が問題なんだろう…!?. #1さんへの補足で既に他の人が入れたCGIが動いていると書かれていますが、 それと同じまたは、その下位ディレクトリでは無いですよね?(もし同じツリーなら以下は無視してください) となると、そのディレクトリも別途マッピングしなければいけませんけど、、 >.htaccess、、、 .htaccessはIISでは無視されるはずですが考え方としては正しい方向です つまり/home/tarou/.htaccessは/home/hanako/ディレクトリには通常、影響しません 同じようにディレクトリツリーが違えば別途設定しなおしって事で、、、   あと蛇足ながら%s %sの意味はうろ覚えですが 片方の%sはQueryなどの環境変数を渡すもので、もう片方はスクリプト自体のfile名を渡すものだったと思います

marie77
質問者

補足

>>客先は一体何が問題なんだろう…!?. >#1さんへの補足で既に他の人が入れたCGIが動いていると>書かれていますが、 >それと同じまたは、その下位ディレクトリでは無いです>よね? 同じディレクトリの中にフォルダを置いて、その下に入れています。 つまり 先輩の入れたのが、enquete/enquete.cgi で、同じ部分に.htaccessがあって、 今回入れたのが、enquete/iken/iken.cgi という形です。 今思ったのですが、先に入れたアンケートは、入れた時期が10月で、アンケート期限が11月だったんです。 もしかしたら、期限が来たので、アンケートを締め切る意味で、cgi動かなくしたままなんじゃ…。とか。 思いました。 ●質問1. だとすると、普通、どうやってcgi動かなくするものでしょうか。権限?とかいうやつですか?(これがよくわかってないですが。) 質問2. また、私のIIS動いていると思いきや、 #2さんの教えてくださったURL(http://ash.jp/tips/iis.htm)冒頭(5)で、 『IISをインストールすると、以下のURLで、製品マニュアルを参照できます。  http://localhost/iishelp/』 昨日は見れたのに、今日は404のエラーになります。 本当にIIS動いてるんでしょうか…。(涙) 質問多く申し訳ありませんが、何卒よろしくお願いします。m(_ _)m

回答No.4

あ~すみません、今うちで試したところ >実行ファイルの項目にperlis.dllまでのフルパス でやるとQUERYとか渡らないみたいです perl.exeまでのフルパスに%s %sですね 例: c:\perl\bin\perl.exe %s %s

marie77
質問者

お礼

わざわざ考えていただき、 そして試してもいただき、本当にありがとうございました。 まだIISがよくわかってないのですが、 %s%sってどういう意味があるのですか? >c:\perl\bin\perl.exe %s %s これは、cgiスクリプトの一番上にかくのですか?

marie77
質問者

補足

「お礼」ではとんちんかんな質問してしまいました。 ↑スクリプトマッピングの設定のことですね。 今自分の環境で試してみました。 私もWin2000で、IIS5.0で、 自分の環境では、見れるようになりました!! 本当にありがとうございます! しかし自分のところで見れて、客先は一体何が問題なんだろう…!?.htaccessの入っているのと同じディレクトリにないからおかしいんだろうか…?あー…。

回答No.3

>『開く』を押すと対象CGIのソースが表示されるようです。 CGIの実行結果ではなくソースが表示されるのなら 1.アクセス権の実行にチェックがされていません 2.またはアプリケーションのマッピングがされていません 客先でそこまで設定できるのかは置いといて、、 うちにはwin2000+IIS5.0しかありませんが一応手順を書いておきます 1.CGIがperlの場合はもちろん事前にPerlがinstallされていることを確認しperlis.dllまでのフルパスをメモしておきます 2.コントロールパネル>管理ツール>インターネットサービスマネージャ >左側のツリーから目的のディレクトリを表示させます(仮にhtmltestと言う名前だとします) 3.htmltestを右クリックして>プロパティ >仮想ディレクトリ タブの>[構成]ボタン> アプリケーションのマッピング>[追加]ボタン >実行ファイルの項目にperlis.dllまでのフルパス 拡張子:cgi 動詞:制限にチェックして GET,POST と入力して[OK]を押す >OK>実行アクセス権に「スクリプトのみ」がチェックされていることを確認して[OK]

回答No.2

デフォルト設定のIISはcgiに対応していません。 もし、設定をされているとすれば、該当ファイルに実行権限があるか確認してみてください。

参考URL:
http://ash.jp/tips/iis.htm
marie77
質問者

お礼

動かすことができました。 参考URLで更に勉強を続けようと思います。 ありがとうございました。

marie77
質問者

補足

ありがとうございます。 今自分のPCにIISセッティングするのがなんだか大変です。 ・PerlとActivePerlって何が違うのかしら? ・元のPerlダウンロードしなおすべき? など、きっときっと根本的なんだろうことで、 非常に迷っています。 参考URL、研究してみます。ありがとうございます。

noname#257070
noname#257070
回答No.1

サーバ側に、cgiの対応言語(Perl?)がインストールされていない または サーバ側で、拡張子cgiがPerlなどと関連づけれれていない のどちらかと思います。 参考URLを見てみてはいかがでしょう。

参考URL:
http://www.din.or.jp/~bigstone/cgilab/cgitips/iis.html
marie77
質問者

お礼

ありがとうございます。 最初に答えをいただき、感謝しています。

marie77
質問者

補足

早速回答ありがとうございます!! ちょっと焦っていて質問の表現が不足していました。 実は、相手のサーバには前回先輩が入れたアンケートCGIが稼動しているので、向こうのサーバでCGIの実行自体はできると思うのです。 ただ、先方のマシン室に入ってテストなどできるのが、火曜ですが、その日のうちに提出の検査があるのであせっています。 参考URLありがとうございます! 自分の環境にIIS入れるのも今四苦八苦しています。 がんばってみます。