プロが教える店舗&オフィスのセキュリティ対策術

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/

A 回答 (9件)

msearch少し見てみました。


すみません、confi_datってPerlのファイルじゃなくて独自フォーマットの設定ファイルでした。
ですから、perl -cでエラーが出るのは当たり前でした。
申し訳ないです。
# こういう方法は珍しいですね・・・

となると、話が戻ってしまうのですが
改行コードとか、Perlへのパスは問題ないですか?
これ、UNIX用に作られてるみたいなので改行コードがCR LFですよね。

この回答への補足

ぐぐってる間にさっそくレスありがとうございます。
perlへのパス(#! /bin/perlみたいなヤツですよね?)は他のテスト用のcgiで動作しているので問題ないようにおもえますが....。
ちなみにこんなのでテストしてみました。↓
http://www.sotechsha.co.jp/yutaka/arc/chap2/test …

あと改行コードというのはエンコーディングできるテキストエディタでs-jis保存すればよいのですかね?

今すぐIISで試したいのですが、手元にIISサーバがなく、ある程度原因を掴んでからIISサーバのある所へ出向こうと思っているのです。なので今すぐには試せません。すいません。

補足日時:2003/04/23 14:04
    • good
    • 0

すみません、外出していたもので返信が遅れました。



改行コードと漢字コードは違いますよ。
Windowsでしたら秀丸で開いてEUCのCR+LFで保存してください。

後は、IISのログを確認してみたらどうでしょうか?
それが手っ取り早いんですが。
    • good
    • 0
この回答へのお礼

毎度レスして頂き有り難う御座います。
やっぱりEUCとCR+LFがかなーりあやしいという結論に達しました。
秀丸はシェアなのでフリーでなにかいいテキストエディタを探してそいつでいじりながらやってみたいと思います。

IISもログとれるんですか?
調べてみます。

長長とお付き合いくださってありがとうございました。
いったん締め切ります。
またわからなくなったらよろしくお願いします。

お礼日時:2003/04/24 09:26

間違えました。



UNIX用なのでLFですね。
WindowsがCR LFです。

でも、perl -cでエラーでないという事は改行コードは問題ないのかな?
後はやはり考えられるのは行頭のPerlへのパスなのですが・・・

この回答への補足

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

こんな感じでしょうか?

補足日時:2003/04/23 14:47
    • good
    • 0

他にsetが使われてるところはありませんか?


全部直してみたらどうでしょう?

というか、setについてぐぐった方が早いですね。
    • good
    • 0

set?


お恥ずかしい事に始めて見ました。

> set $logencoding=shift_jis

これを、

> $logencoding = 'shift_jis';

にしたらどうですか?

この回答への補足

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

私もsetなんて初めて見ました。

補足日時:2003/04/23 13:25
    • good
    • 0

関係大有りです。


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

この回答への補足

関係大有りですか(汗。
エラーはこんな感じです。
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>

こんな感じです。
すいませんなにが原因だかさっぱりです。
エンコーディングの設定がおかしいってことですかね?

補足日時:2003/04/23 13:02
    • good
    • 0

スクリプトに flock が使われていませんか?


確か flock は UNIX で使えて Windows ではだめだった
と思います。
もし flock が原因ならば、
flock

#flock
でコメントアウトしてやればいいです。

この回答への補足

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

補足日時:2003/04/23 13:00
    • good
    • 0

あ、すみません。


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

この回答への補足

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

補足日時:2003/04/23 11:53
    • good
    • 0

単純にWindowのPerlで実装されていない関数を使っているとか?


HTTPDよりもPerlに問題がある気がしますね。
perl -c でチェックしてみたらどうですか?

この回答への補足

IISにactiveperlをインストールをインストールしても実装されない関数があったりするのですか?
ちなみにインストールしたモノはAPI517e.EXEです。

補足ですがIISで他のcgi(テスト的な簡単なヤツ)は動きました。

perl -cでチェックしたのですが、エラーは出ませんでした。

なんだか乱文ですいません。
混乱気味です。

補足日時:2003/04/23 11:21
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!