IISでPerlが動かない?原因と解決方法を解説します!

このQ&Aのポイント
  • Win2K ProのIISでローカルサーバーを構築し、Perlを使ったサーバーサイドスクリプトを試しています。しかし、Perlが正常に動作せず、CGIタイムアウトが発生してしまいます。Active PerlやCygwinのPerlを試しても同じ現象が起きており、他のApacheサーバーでは正常に動いていることから、IISの設定が原因と考えられます。
  • Perlの実行ファイルのパスや拡張子の設定は正常に行われているため、他の要素が問題となっています。文字コードや改行コードの設定に問題がある可能性もありますので、それらの設定を見直してみてください。また、httpヘッダが正常に返されていることから、Perlのソースコード自体に問題がある可能性は低いと言えます。
  • IISを使っている方には、次のようなアドバイスをします。まずは、IISの設定を確認し、CGIの有効化やタイムアウトの設定などが適切に行われているか確認してください。また、Perlの実行環境に問題がある場合は、パスや環境変数の設定を見直してみてください。さらに、IISのログファイルを確認してエラーメッセージを特定し、解決策を見つけることも重要です。
回答を見る
  • ベストアンサー

IISでCGIとしてのPerlが動かない

Win2K ProにてIISでローカルサーバーでサーバーサイドスクリプトの勉強中です。 ASPは標準でついているので、PerlとPHPを組み込みました。 PHPは内部プロセス型ではなく、CGIバージョンですが、正常動作しました。 もちろんASPも。 それで問題なのですが、Perlがどうしても動きません。 PHPと同じように実行ファイルのパスや拡張子の設定はできているはずです。 しかし、いつまでたっても出力が出ず、2分くらいたってCGIタイムアウトとなってしまいます。 PerlにはActive PerlとCygwin付属のPerl両方試しましたが、タイムアウトです。 ファイルをコンソール上で実行してみましたが、Active PerlもCygwinのPerlも、期待通りの出力がなされています。 ちなみに、shファイルをCygwinのbashに関連付けて、実行させましたが、コンソール上での出力とはうらはらに、ブラウザ上ではやはりタイムアウトとなりました。 PerlのソースはいずれもほかのところのApacheでは動いているものです。 httpヘッダも正常です。 ソースの文字コードは英語のみ、EUC、改行コードcr+lf、lfのみなど、いろいろ試しましたがダメでした。 なにが原因なのでしょう。 IISを使っている方、アドバイスお願いします。

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

  • ベストアンサー
  • SLIM
  • ベストアンサー率38% (191/491)
回答No.1

原因は、分かりませんが ActivePerlが動いてるのでその環境を。 インストール先 C:\usr\local\bin\Perl #この直下にbin eg html lib site の各フォルダができる #「#!/usr/local/bin/perl」の記述を、一々変更させないため 規定のWEBサイトのプロパティーから、ホームディレクトリ→構成→アプリケーションのマッピングの「追加」で実行ファイルを「PerlIS.dll」拡張子を「.cgi」動詞は「全て」で追加(.pl .plxはPerlインストール時に自動で追加されている) 「*.cgi」を「\Inetpub\scripts」のフォルダに置く。 一応これだけで動いています。 あ、そう言えばデフォルトがいやだったので\scriptsと同じように設定したつもりで作った別名フォルダじゃ動かなかったことがあります。 後は・・・セキュリティー関係でなにか制限を設定していないかどうかの確認でしょうか?

haporun
質問者

お礼

PerlIS.dll? perl.exeに関連付けちゃいけないんでしょうか。 試してみます。 できたらまた報告します。

haporun
質問者

補足

動きました! perlis.dllなんてものがあったとは・・・。 Win98でunhttpdを使っていたときは、EXEファイルを指定すれば良かったのに、まさかIISではサーバープロセスに組み込まれているとは思いませんでした。 どうもありがとうございました。

関連するQ&A

  • 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 timeoutって? IISでのcgi設定

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

    • 締切済み
    • CGI
  • IISのタイムアウト設定について

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

  • IIS5.1でCGI Timeoutになる原因を教えてください。

    Perlでプログラムを書きIIS 5.1で実行すると約5分程度で下記のようなメッセージでCGI Timeoutになってしまいます。 下記のURLの指示に従いIISのCGIスクリプトタイムアウト値は300秒から1800秒に延長しています(IIS5.1なのでGUIは少し違いますが)。 http://www.microsoft.com/japan/technet/community/columns/insider/iisi0302.mspx 原因を教えてください。 CGI Timeout The specified CGI application exceeded the allowed time for processing. The server has deleted the process. よろしくお願いします。

    • ベストアンサー
    • CGI
  • PerlのCGIとPHPを

     特定のディレクトリのCGIの中にPHP(Apacheのモジュール版)を書き、(CGIで<?php~?>とHTMLを出力させる)Perl/CGIを実行したときにその出力の中に含まれるPHPを実行させたくて、.htaccessに AddHandler application/x-httpd-php cgi AddHandler cgi-script .cgi を書いたのですが、どうやらPHPのAddHandlerの後に書かれているCGIの方が優先され、PHPが実行されず、CGIのみが実行されます。  順序を逆に書いても、今度はPHPが優先されてしまい、どちらか片方しか実行されません。  どうすれば、両方同時に実行させられるでしょうか、教えてください。  それが不可能ならば、とりあえずPerl/CGIからPHPを呼び出して先に実行させるようなことができるのならば教えてください。  ちなみに、httpd.confには拡張子cgiをすべてのディレクトリでCGIとして実行、拡張子phpもすべてのディレクトリでPHPとして実行させるようにAddHandlerされています。 Apache/2.0.58(Windows版) PHP/5.1.6 CGI: ActivePerl 5.88 です。

    • ベストアンサー
    • PHP
  • cgi(perl)からphp呼出

    どなたかご教授ください。 perlのcgiからsystem関数でphp(コマンドで実行可能なコード)を実行して返値を得たいのですが perlのcgiの実行結果では画面に文字化けを起こしたような結果が帰ってきます。 cgi(perl)からphpを実行するにはどのように すればいいのでしょうか? ご教授ください。

    • 締切済み
    • PHP
  • IISでPHP使うにはどう設定したらいいですか?

    IIS+CGI(Perl)の場合は実行ファイルのある場所を/usr/local/bin/などとファイルの最初に指定するのはわかります。 しかしIIS+PHPで実行ファイルのある場所を指定するときはどうやったらいいのかわかりません。ApacheだとScriptのエイリアスで設定するみたいですが私にはよく分かりません。 どなたか回答をお願いいたします。

  • iis+cgiでmultipart/form-data送信がうまくいかない

    これまでLinux+Perl/CGIで構築していたWEBサーバをIIS+Perl/CGIに移す必要が生じ、新規にIISによるWEBサーバを構築しました。 一気にコンテンツを移動してもハマるだけだと考え、まずは簡単なコードを記述しCGIが動作するかどうかテストしています。 POSTによるinput type=textのデータ表示まではうまく行きましたが、ファイルアップロードのところで詰まりました。 IIS(Windows)によるWEBサーバの構築は初めてで、何が問題なのかサッパリわかりません。 どなたか問題点あるいはどこをチェックすれば良いかご指摘いただけませんでしょうか。 ●やった事 PerlにてPOSTを利用しmultipart/form-dataにてファイルをアップロードするシンプルなコードを書き、第一段階としてMIMEエンコードされたものをブラウザ上に表示するしようとしてみた。 コードは最下方の通り。 ●症状 送信を実行してもアップロード中のまま(ウィンドウマークが動き続けている)で、IISに設定してある10分程のタイムアウト時間を過ぎて終了してしまう。 TXT、XLS、DOCなどファイル種を変えて試しても全く同じ症状。 ●環境:Windows2000ServerSP4 IIS5.0 Perl5.8.8 *******アップロード画面****** <HTML> <HEAD> <TITILE>ファイルのアップロード</TITLE> </HEAD> <BODY> <FORM ACTION="/cgi-bin/upload.cgi" ENCTYPE="multipart/form-data" METHOD="POST"> ファイル: <INPUT TYPE="file" NAME="File" SIZE="32"><BR> <INPUT TYPE="submit" VALUE="送信"> </FORM> </BODY> </HTML> **********ここまで*********** *******CGI******************* #!/perl/bin/perl read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); print "Content-type: text/html\n"; print "\n"; print "<HTML>\n"; print "<HEAD>\n"; print "<TITLE>test</TITLE>\n"; print "</HEAD>\n"; print "<BODY BGCOLOR=\"#ffffff\">\n"; print "$buffer"; print "</BODY>\n"; print "</HTML>\n"; exit; ********ここまで***********************

    • ベストアンサー
    • CGI
  • IIS6.0でcgiが認識できない

    IIS6.0でcgiが認識できないのですが 以下の構成でどうなのでしょうか? 仮想パスは認識できているようなので、 http://*.*.*.*/cgi-bin/index.html は表示できます。 ■環境:win2k3/ActivePerl5.8.4/IIS6.0 #################################### アプリケーションの構成マッピング ------------------------------------ ●ISAPI拡張をキャッシュする(checked) ●アプリケーションの拡張子 .pl D:\user\local\bin\perl.exe GET,POST .cgi D:\user\local\bin\perl.exe GET,POST ※スクリプトエンジン(checked) ※ファイルの存在を確認する(checked) #################################### perlの実行ファイルは,ググった結果、以下のものも試してみましたが だめでした。 perlIS.dll perl5.8.4.exe perl.exe "%s" %s どうぞお願いします。

  • exec cgi ="aaa.cgi" を有効にする方法

    <!--#exec cgi="./aaa.cgi" --> を記述したshtmファイルからcgi を呼び出そうとすると スクリプト './test6.cgi' を実行できませんでした: Win32 エラー コード = 2 と表示されて実行できません。 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpiis/iishelp/iis/htm/core/iiregwww.asp を参考に、レジストリを書き換えても出来ません。 どう設定すれば実行できるようになるのでしょうか? IIS5.0(w2000pro) + ActivePerl

    • ベストアンサー
    • CGI

専門家に質問してみよう