IISで動作しないcgiの原因と対処法は?

このQ&Aのポイント
  • apacheサーバでは正常に動作するcgiが、iisではエラーが発生して動作しないことがあります。
  • エラーの内容はSyntax errorとExecution of aborted due to compilation errorsというものです。
  • UNIX系のWebサーバでは動作するcgiが、iisでは動作しないことがあるので、原因と対処法を知りたいと思っています。
回答を見る
  • ベストアンサー

apacheで動作してIISで動作しないcgi

webに検索エンジン機能を付けようと思いいmsearchという検索cgiを入れたのですが、apacheサーバだとうまく動いてくれるのですが、iis(var4)だとエラーがでて動いてくれません。 (エラーの内容はSyntax errorとExecution of aborted dueto compilation errorsだったと思います) UNIX系webサーバで動いてiisで動かないCGIというのは存在するのでしょうか? また、あるとしたら何が原因で、対処法はあるのでしょうか? 非常に困っていますどなたか知恵をお貸し下さい。 お願いします。 msearch:http://www.kiteya.net/script/msearch/

  • CGI
  • 回答数9
  • ありがとう数4

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

  • ベストアンサー
  • ikspiari
  • ベストアンサー率48% (29/60)
回答No.7

msearch少し見てみました。 すみません、confi_datってPerlのファイルじゃなくて独自フォーマットの設定ファイルでした。 ですから、perl -cでエラーが出るのは当たり前でした。 申し訳ないです。 # こういう方法は珍しいですね・・・ となると、話が戻ってしまうのですが 改行コードとか、Perlへのパスは問題ないですか? これ、UNIX用に作られてるみたいなので改行コードがCR LFですよね。

mtakaeic
質問者

補足

ぐぐってる間にさっそくレスありがとうございます。 perlへのパス(#! /bin/perlみたいなヤツですよね?)は他のテスト用のcgiで動作しているので問題ないようにおもえますが....。 ちなみにこんなのでテストしてみました。↓ http://www.sotechsha.co.jp/yutaka/arc/chap2/test_cgi.lzh あと改行コードというのはエンコーディングできるテキストエディタでs-jis保存すればよいのですかね? 今すぐIISで試したいのですが、手元にIISサーバがなく、ある程度原因を掴んでからIISサーバのある所へ出向こうと思っているのです。なので今すぐには試せません。すいません。

その他の回答 (8)

  • ikspiari
  • ベストアンサー率48% (29/60)
回答No.9

すみません、外出していたもので返信が遅れました。 改行コードと漢字コードは違いますよ。 Windowsでしたら秀丸で開いてEUCのCR+LFで保存してください。 後は、IISのログを確認してみたらどうでしょうか? それが手っ取り早いんですが。

mtakaeic
質問者

お礼

毎度レスして頂き有り難う御座います。 やっぱりEUCとCR+LFがかなーりあやしいという結論に達しました。 秀丸はシェアなのでフリーでなにかいいテキストエディタを探してそいつでいじりながらやってみたいと思います。 IISもログとれるんですか? 調べてみます。 長長とお付き合いくださってありがとうございました。 いったん締め切ります。 またわからなくなったらよろしくお願いします。

  • ikspiari
  • ベストアンサー率48% (29/60)
回答No.8

間違えました。 UNIX用なのでLFですね。 WindowsがCR LFです。 でも、perl -cでエラーでないという事は改行コードは問題ないのかな? 後はやはり考えられるのは行頭のPerlへのパスなのですが・・・

mtakaeic
質問者

補足

整理すると 1.Perlのパス:他のcgiで動いたので多分あってる。 2.改行コード:EUC版とs-jis版の両方を用意してみる。 3.unixで使えてwinで使えない関数があってそれを使っている:ぐぐっても具体的にflock以外どの関数がだめなのかわからないです。 こんな感じでしょうか?

  • ikspiari
  • ベストアンサー率48% (29/60)
回答No.6

他にsetが使われてるところはありませんか? 全部直してみたらどうでしょう? というか、setについてぐぐった方が早いですね。

  • ikspiari
  • ベストアンサー率48% (29/60)
回答No.5

set? お恥ずかしい事に始めて見ました。 > set $logencoding=shift_jis これを、 > $logencoding = 'shift_jis'; にしたらどうですか?

mtakaeic
質問者

補足

光速レスポンス有り難う御座います。 アドバイスの通り変えてみて、perl -cしてみましたが、エラーは変わりませんでした。 私もsetなんて初めて見ました。

  • ikspiari
  • ベストアンサー率48% (29/60)
回答No.4

関係大有りです。 本体から読み込むファイルは全て関係します。 エラー内容から何処でエラーになってるかわかりませんか?

mtakaeic
質問者

補足

関係大有りですか(汗。 エラーはこんな感じです。 Semicolon seems to be missing at config.dat line46. synax error at config.dat line 47,near "set" bareword found where operator expected at config.dat line 116,near ""Content-type" content" (Missing operator before content?) Unrecognized character \214 at config.dat line 118 となっていてます。 47行目付近は # ログファイルの漢字コード(デフォルト=euc-jp) #set $logencoding=euc-jp set $logencoding=shift_jis #set $logencoding=iso-2022-jp 118行目付近は # ↓の2行は変更しない方が無難 <meta http-equiv="Content-Type" content="text/html;charset=$$encoding$$"> <meta http-equiv="Content-Language" content="jp"> <title>検索結果 powered by msearch</title> </head> こんな感じです。 すいませんなにが原因だかさっぱりです。 エンコーディングの設定がおかしいってことですかね?

  • jubay
  • ベストアンサー率30% (3/10)
回答No.3

スクリプトに flock が使われていませんか? 確か flock は UNIX で使えて Windows ではだめだった と思います。 もし flock が原因ならば、 flock ↓ #flock でコメントアウトしてやればいいです。

mtakaeic
質問者

補足

アドバイスありがとうございます。 flockは使われていないようです。 UNIXで使えてwinで使えない関数は他にありますでしょうか?

  • ikspiari
  • ベストアンサー率48% (29/60)
回答No.2

あ、すみません。 ActivePerlについて詳しく存じ上げませんが、Windows用のPerlにはUNIX用のPerlに実装されていない関数があったのは間違いないと思います。 msearchって、複数のスクリプトで構成されてますよね? 本体にエラーが出なくても外部ファイルがエラー起こしてる事はありませんか? 全てのファイルをperl -cでチェックしてみてください。

mtakaeic
質問者

補足

ご相談にのっていただいて有り難う御座います。 すべてperl -cでチェックしてみました。 config.datという設定ファイルにエラーがでました。 これって設定ファイルなので関係ないですかね? それとも関係大有りですか?

  • ikspiari
  • ベストアンサー率48% (29/60)
回答No.1

単純にWindowのPerlで実装されていない関数を使っているとか? HTTPDよりもPerlに問題がある気がしますね。 perl -c でチェックしてみたらどうですか?

mtakaeic
質問者

補足

IISにactiveperlをインストールをインストールしても実装されない関数があったりするのですか? ちなみにインストールしたモノはAPI517e.EXEです。 補足ですがIISで他のcgi(テスト的な簡単なヤツ)は動きました。 perl -cでチェックしたのですが、エラーは出ませんでした。 なんだか乱文ですいません。 混乱気味です。

関連するQ&A

  • IISでCGIを動かすには?

    NT4.0にIISでwebサーバを立ちあげています。 ローカルなネットワークではありますが、クライアントからスクリプトを 実行させると「表示できません」というエラーになります。 また、サーバマシンのブラウザで表示させると、CGIスクリプトがそのまま 表示されてしまいます。 .cgiのMIMEタイプの設定がうまくできていないのでしょうか? レジストリをいじってみたのですが、よく分かりませんでした。 お分かりになる方、ぜひ教えてください。よろしくお願いいたします。

  • IISでCGIを動かすには?

    NT Server4.0でIISのwebサーバを立ち上げています。 ActivePerlをインストールしました。 CGIスクリプトを動かしたいのですが、クライアントから実行させると 単にCGIスクリプトが表示されるだけです。 .cgi拡張子のMIMEタイプの登録が必要なのでしょうか? レジストリをいじってみましたが、よく分かりませんでした。 あまり詳しくなく、初心者に近いですがよろしくお願いします。

  • apacheのCGI設定について教えてください。

    CGIの勉強のために、古いパソコンに fedora core 4 をインストールしてapache でローカルのテスト用サーバーにしようとしています。 /var/www/html に設置した簡単な perl CGI は動くのですが、同じものをユーザーのホームディレクトリに設置すると、internal server error になってしまいます。 ***** 以下 httpd.confの抜粋です。***** #UserDir disable UserDir public_html <Directory /home/*/public_html> AllowOverride All Options Includes ExecCGI FollowSymLinks SetHandler cgi-script </Directory> AddHandler cgi-script .cgi .pl ************************************** サーバーのエラーログを見ると Premature end of script headers: test.cgi となっています。htmlをprintしているだけのスクリプトで、/var/www/html では動くので、apache の設定の問題かと思っています。 ちょっとカテゴリーが違うかもしれませんが、よろしくお願いします。

    • ベストアンサー
    • Perl
  • apacheとIISについて

    会社でWEBサーバーを立ち上げる予定なのですが、 UNIX系OSでapacheを利用する場合とWindowsでIISを利用する場合だと、 何か大きな違いとか機能面での特異性、優位性とかってあるんでしょうか? apacheでいいと思っていたのですが、 最近はIISのシェアも随分伸びてきているようなので気になりました。 (IISのシェアが伸びたのは何か利点があったからでしょうか?) 個人的には前者はオープンソースなのでコストがかからない、ドキュメント類が豊富、 後者は運用管理ツールが豊富、GUIで管理できる、慣れているWindowsで操作できるくらいかなと思っているのですが・・・。 導入の参考にしたいのでよろしくご教授願います。

  • script headers って?

    NO.202703の質問をしたものです。 1.Premature end of script headers: c:/www/public_htm/up_file.cgi 2.String found where operator expected at c:\WWW\PUBLIC~1\UP_FIL~1.CGI line 59, near "open INDD1, "$indd1"" 3.syntax error at c:\WWW\PUBLIC~1\UP_FIL~1.CGI line 58, near "open(INDD1, "$indd"" 4.Execution of c:\WWW\PUBLIC~1\UP_FIL~1.CGI aborted due to compilation errors. 2.3.4.のエラーについては、解決?できました。 (エラー行をコメント(#)にしたりしてるうちに・・・原因はよくわかりませんでしたが・・・) 1.のエラーの意味がわかりません。  script headers って何のことなんでしょうか? ※ このエラーログはApacheのサーバーのログです ※ このCGIは、フォームデータを受けっとてファイルを更新するようになっています。

    • ベストアンサー
    • Perl
  • IIS7.0でのCGIエラー 502

    IIS7.0でサーバーを構築してブラウザでCGIを動作させようと思ったのですが、以下のようなエラーが出てしまいます。 サーバー エラー -------------------------------------------------------------------------------- HTTP エラー 502 - Web サーバーがゲートウェイまたはプロキシ サーバーとして動作しているときに、無効な応答を受信しました。 説明: 検索中のページに問題が発生したため、表示することができません。Web サーバーがゲートウェイまたはプロキシ サーバーとして動作し、上位のコンテンツ サーバーと通信しているときに、そのコンテンツ サーバーから無効な応答を受信しました。 -------------------------------------------------------------------------------- サーバー バージョン情報: インターネット インフォメーション サービス 7.0. どうすればこのエラーを無くせるかどなたか教えてください。 お願いします。 参考にして設定したページはここ http://www.geocities.jp/le_grand_concierge/_geo_contents_/MATE_NX_MA23C/IIS/PerlIIS60setting.htm です。 動作させようとしたCGIはこちらです。KENT-WEBさんのYYBBSのCGIです。 http://www.klaas-web.com/cgi-bin/yybbs/yybbs.cgi どなたか回答よろしくお願いします。

  • IISでCGIを動かしたい

    windows 2008 server R2、IIS7.5、ActivePerlの環境でCGIを動かしたいのですが、エラーになってしまって動かないフリーの掲示板CGIがあります。一般的なレンタルサーバーでは動かせるのですが、IISで動かすにはどこに注意すればいいんでしょうか?漠然とした質問ですが、よろしくアドバイスをお願いします。

  • Apache WebサーバでCGIが実行できない

    Apache WebサーバでCGIを実行すると Premature end of script headers というエラーになります。原因が判りません。何方かご教示をお願いします。

  • IIS或いはwinapache?

    IISでPerlのCGIはどう設定すれば動くようになるのでしょうか? またはWindowsのapacheではVBScriptのASPは動くのでしょうか? Windows2000のWebサーバーでどちらを使うか迷っています。(WindowsのIISはあまりよくわからないので・・・) Linuxのapacheなら多少は解るのですが・・・

  • LinuxのapacheでCGIが動かない

    RedHatLinux7でイントラネットでWebサーバーを構築しました(apache)で、CGIを動かしたいのですが、動きません。あるサイトで「httpd.conf の AddHandler cgi-script .cgiを生かせばいい」となっていたのでそうしましたが、まだ動きません。あと何を設定すれば良いのですか?(CGIのパーミッションはちゃんとしています。)httpd.confにCGIの記述が他にもありましたが意味がわからずそのままにしています。