• ベストアンサー

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

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

  • CGI
  • 回答数7
  • ありがとう数6

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

  • ベストアンサー
回答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入れるのも今四苦八苦しています。 がんばってみます。

関連するQ&A

  • IIS7.0でのnph_cgiが逐次出力しません

    CでCGIを作成し、Windows 2003 Server (IIS6)で動かしています。CGIの名称をnph_xxx.cgiとしてHTMLを出力し、ブラウザに逐次表示しています。このCGIをWindows 2008 server(IIS7.0)で動作させたのですが、逐次出力できておりません。CGIが走り切るとブラウザに出力されます。IIS7.0の設定が悪いのか、プログラムを直さなければいけないのかわかりません。解決策をご存じの方、よろしくお願いします。

    • 締切済み
    • CGI
  • IIS6.0/5.0でCGIがエラーになる。

    お世話になります。 WindowsServer2003(WebEditon)SP1,32Bit+IIS6.0+AvtivePerlを利用して自宅サーバーを公開のため、テストをしていますが、掲示板の設置に際して、CGI関連で色々と問題が発生して困っております。 掲示板に利用するCGIはフリーのもので 「joyful2ch」http://www.supra.cx/joyful2chMe/index.html 「joffulNote」http://www.kent-web.com/bbs/joyful.html のどちらかを利用する予定でテストしていますが、両方とも問題が発生してしまいます。 joyful2chの方は CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers. というエラーメッセージが出ます。発生するのは書き込みを行おうとした時です。掲示板自体は表示されますし、管理画面などにも入れます。HelloWorldなどと表示する簡単なCGIは動きますので、CGI自体の実行が出来る環境は出来ているものと思います。 joyfulNoteの方は ERROR! OpenError ./data/count.cgi というエラーメッセージが出ます。この他にもフリーの掲示板を色々試してみましたが、ほとんどのCGIで書込みなどの際に CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers. というエラーが発生してしまいます。 WebやOkWebの過去ロクで検索をすると requireの部分など、読み込むファイルのパスに指定について chdirなどでディレクトリを変更する アクセス権を変更する。 などの情報が見つかりましたので一通り試しましたが、結果は変わりません。(プログラムに関する知識が殆ど無いので、パスとディレクトリ変更に関しては設定法が間違ってる可能性はアリです。)アクセス権に関しては試験的に全てフルコントロールにしてあります。 行き詰ったのでしまいこんでいた「Windows2000Server」を持ち出し仮想マシンにインストールし試してみましたが、上記2つのjoyfulCGIに関しては結果は変わりません。joyful2chに関しては The symlink function is unimplemented at ./joyful2ch-lib.pl line 102 と言うエラーが2000Serverでは追加で表示されてます。 IIS使うならASPを使えと言うご意見があるのは十分承知しています。しかしながら、有料も含めてもASPの掲示板などを公開しているサイトはほとんど無いですし、CGIの方がデザインなども自由に選べ選択肢が豊富なのでCGIと使おうと思っています。 何か情報をお持ちの方、書き込みお待ちしております。 上記2つの掲示板以外に似たような掲示板でIISで動くものをご存知の方居ましたらそのような回答でも構いません。

    • ベストアンサー
    • CGI
  • IIS上でフリーCGIが動かない

    Windos2003Server IIS6.0環境で ActivePerl5.8.8 を導入しましたが、 KENTWEBなどで配布されているフリーCGIをブラウザから開くと、 画面が真っ白のまま何も表示されていません。(エラー表示もありません) 以下のテスト用CGIを作成し、フリーCGIと同フォルダに置いてアクセスすると正常動作します。 --------------------------- #!/user/local/bin/perl print "Content-type: text/html\n\n"; print "こんにちわ\n" --------------------------- この現象の原因としてどのようなことが考えられるでしょうか。 ご存知の方がおられましたらご教示ください。

  • IIS5で作成したASPをIIS7でデバッグしたい

    Windows2000+SQLServer2000Standard+IIS5環境で作成したASPを Windows2008+SQLServer2005Express+IIS7環境に移植したところ、 いくつかのASPでエラーが出るようになりました。 IIS5の環境ではエラーになった行数や詳細が表示されていましたが、IIS7では「500-内部サーバーエラーです」程度しか表示されず、どこが悪いのかわかりません。 IIS5では動いているし、IIS7上でもきちんと動作しているASPもあるので、どこが悪いのかわからず困っています。せめてエラーになっている行がわかれば、と思うのですが・・・ IIS5のようにエラーの詳細情報を表示させる設定か、または別のデバッグ方法をご存知の方がいらっしゃいましたらご教示お願いいたします。 開発はVisualInterDev6.0です。 お手数をおかけいたしますが、宜しくお願いします。

  • ASP(IIS?)のエラーについて

    お世話になっております。 ASPのプログラムをやっている者なのですが、分かるかたいましたらご教授ください。 環境はWin2003Server+IIS6.0になります。 上記の環境で自部門のWebサーバーのプログラミングをしているのですが、ここ最近 「HTTP/1.1 新しい Session の作成に失敗しました」 というASPエラーがでてしまいWebが見れない状態になっております。 内部公開用のサーバーで前任者が辞めてしまい、その後私が引き継ぐことになったのですが、サーバーにあまり詳しくないのもあり苦戦しております。 必死に原因と対策を探したのですが、これといった原因、対策方法が見つからず途方に暮れております。 探していて、なんとなくわかったことはIIS側に問題あるのではないだろうか?という事くらいです。 それも確定ではないのですが、非常に困っており何方か分かる方いらっしゃいましたら、是非ご教授願えませんでしょうか?m(__)m どうぞ、よろしくお願いいたします。

  • IISで複数ファイルのダウンロードができません

    複数のチェックボックスがあり、1つしかない出力ボタンを押すと、 チェックされたそれぞれの処理が走り、 それぞれのExcelファイルを作成し、保存させるという 処理を行っています。 tomcatのみのローカル環境では、想定通り、 チェックされた分だけの処理が走り、それぞれの保存ダイアログが 開くことを確認できました。 しかし、IIS+tomcatの本番環境で確認したところ、処理は正常に行われているのですが、保存ダイアログが異常な動きをします。 チェックを3つした場合でも1つしか保存ダイアログが開かないという状況です。 ローカル環境と本番環境のモジュールは完全に一致しているので、 異常な動作をしている理由はIISの設定ではないかと思うのですが、 検索してもIISでの複数ファイルのダウンロードについて記述されているものを見つけることができませんでした。 もしご存知の方がおられましたら解決法をご教授ください。 以下に環境を記述します。 【環境】 WindowsServer2003 EnterPrieEdtion IIS6.0 Tomcat4.0 どうかよろしくお願いします。

  • IISのタイムアウト設定について

    Windows2000+IIS6.0+ActivePerlで、時間がかかる処理を行うプログラムを作成しているのですが、 CGIタイムアウトが発生してしまい、最後まで実行 出来ません。 IISの設定で、ASPのタイムアウトや、セッションタイムアウトを30分とかに設定してもなぜか5分ほどでエラーになってしまいます。 どのようにすればCGIの実行時間を延ばせるのでしょうか?

  • IISでCGIの設定がうまくいきません

    すみません質問させてください。 今、XPでIISをインストールしてCGIが動くようにしてるんですが うまくいきません。 http://localhost/hello.cgi というurlで実行できると思うんですが、 いつまでも読み込んでるだけで、実行されない感じです。 実行するCGIはHELLOと表示する単純なものです。 また、.cgiファイルは実行プログラムをC:\perl\bin\perl.exeに 指定しています。 IISでは、規定のWEBサイトのプロパティ>ホームディレクトリの 「構成」で.cgiの実行ファイルをC:\perl\perl.exeに指定しています。 とりあえずやるだけやったと思ってるんですが、うまくいかないのはどうしてでしょう。 よろしくお願いします。

  • CGIの500エラーの原因が分かりません

    お世話になります。 http://apps.cside.com/ このサイトで配布されている http://apps.cside.com/theme/tmresmail/ を設置してみました。 デフォルトの状態で設置して動作テストをしてみたのですが、フォームに入力して確認画面が出て、そこから送信ボタンを押すと500エラーが表示されます。 しかし、ブラウザの戻るボタンで確認画面に戻ってから、もう1度送信ボタンをすると送信完了の画面が表示されます。 cgiのパーミッションは間違っていないと思います。 1度エラーが出ても、1度戻ってからもう1度送信ボタンを押すと送信完了画面になるので、CGIは動作しているのですが、なぜか最初500エラーが表示されてしまいます。 このCGIは送信データを保存できる機能もついているのですが、フォームに入力して確認画面を出して、確認画面の送信ボタンを押したら500エラーが出るのですが、この時点でサーバ側には送信データが保存されています。 確認画面から送信完了画面の間で、何らかの要因でエラーになってしまっていると思います。 何が原因か分かるでしょうか。 レンタルしている2つのサーバで設置してテストをしてみましたが、両方とも同じ症状になります。 アドバイスをお願い致します。

    • 締切済み
    • CGI
  • IIS10の設定

    Windows10 pro(64bit)にIISをインストールしました。(IIS10でした) インストールしたての時は、localhostでちゃんとデフォルトの画面が見えます。 directoryを変えたいところですが、変えても駄目だったので(*)、デフォルトのwwwrootに 動かしたいWEBサイト一式をコピーしました。 それで、http://localhost/xxx.htm と表示させようとしたのですが、表示すらできません。 エラー画面のスクリーンショットを添付させていただきます。 WEBサイト一式は別環境で動いている一式です。(同じ64bit環境) IIS10はそれほど変わっていないと思っていますが、情報があまりなく困っています。 こんなところで躓くとは、、、情けないですが何とかアドバイスお願いいたします。 (*)添付画像と同じエラーです。

    • 締切済み
    • CGI

専門家に質問してみよう