• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:apacheで動作してIISで動作しないcgi)

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

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

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

  • ベストアンサー
  • 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