サイト内検索を付けたくて、以下のサイトよりモジュールをダウンロードしました。
http://www.synck.com/contents/download/cgi-perl/ …
CGIの設定環境(CGI設置場所、Perlのパス、Encodeモジュールの存在、パーミッション)
についてはサーバー管理者に確認済みで、問題ないのですが、実行してもエラーも出ず、
うんともすんとも言わない状態です。
HTML からは、以下のように呼び出しがされています。
-------------------------------------------------------------------------------
<form class="sitesearch" method="get" action="index.cgi" onsubmit="return sitesearch(this);">
<input type="text" name="q" value="" /> <input type="submit" value="サイト内検索" />
-------------------------------------------------------------------------------
action で呼び出しているindex.cgi で動いているかどうか確認する方法を
教えていただけませんでしょうか。
一応、index.cgi の最初の方にメッセージを入れてみたのですが、表示されませんでした。
以下は、index.cgi の一部です。
-------------------------------------------------------------------------------
#!/usr/bin/perl
## 京
use Encode;
require './init.cgi';
&_GET;
my(@keys) = split(/ /,$_GET{'q'});
print "テスト\n"; ←こんな感じにメッセージいれました。
## int
$totime = time();
if((-f $config{'cache'}) && (((stat($config{'cache'}))[9] + 60 * $config{'expiration'}) > $totime)){
## Load Cache
@pages = &_LOAD($config{'cache'});
}
else{
## Create Cache
push @dirs,$config{'dir'};
while($cnt < @dirs){
$dir = $dirs[$cnt];
opendir DH, $dir or die "$dir:$!";
while (my $file = readdir DH) {
next if $file =~ /^\.{1,2}$/;
$currentpath = $dir . $file;
if(-d $currentpath && (grep(/^${file}$/,@excluded_dirs_name)) == 0){
push @dirs, "${currentpath}/";
}
elsif((split(/\./,$currentpath))[-1] =~ /htm/si){
$html = join("",&_LOAD($currentpath));
$html =~ s/\t//ig;
$html =~ s/\r//ig;
$html =~ s/\n//ig;
my ($tilte,$snippet,$keywords,$contents,$thumbnail);
if($html =~ /<title>(.*?)<\/title>/si){
$title = $1;
if($title =~ /$config{'title_regex'}/){
$title = $1;
}
}
if($html =~ /<meta.*?name=\"Description\".*?content=\"(.*?)\"/si){
$snippet = $1;
}
if($html =~ /<meta.*?name=\"Keywords\".*?content=\"(.*?)\"/si){
$keywords = $1;
}
if($html =~ /$config{'body_regex'}/){
$contents = $1;
$contents =~ s/<script.*?\/script>//g;
$contents =~ s/<.*?>//g;
}
## Thumbnail
$thumbnail_path = "${dir}images/thumb_${file}\.jpg";
if(-f $thumbnail_path){
$thumbnail = $thumbnail_path;
$thumbnail =~ s/$config{'uri_replace_before'}/$config{'uri_replace_after'}/i;
}
@file_info = stat($currentpath);
($sec,$min,$hour,$day,$mon,$year) = localtime($file_info[9]);
$file_updatetime = sprintf("%04d-%02d-%02d %02d:%02d:%02d",$year+1900,$mon+1,$day,$hour,$min,$sec);
$file_size = int($file_info[7] / 1024);
$currentpath =~ s/$config{'uri_replace_before'}/$config{'uri_replace_after'}/i;
@page = ($currentpath,$thumbnail,$title,$snippet,$keywords,$contents,$file_updatetime,$file_size);
push @pages,join("\t",@page);
}
}
closedir DH;
$cnt++;
}
-------------------------------------------------------------------------------
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
>うんともすんとも~
ということはjavascriptの問題ではありませんか?
onsubmit="return sitesearch(this);"
とありますが、必要なJavaScriptファイルは取り込んでいますか?
Ajaxモードであれば、検索結果を表示するための
<div id="search_result"></div>
はHTMLのどこかに記入されていますか?
あるいは
onsubmit="return sitesearch(this);"
を削除して送信すると結果はちゃんと表示されますか?
(あるいは直接 http://~/index.cgi?q=aaaなどでアクセスしてみる)
早々にご回答いただきありがとうございました。
---------------------------------------------
onsubmit="return sitesearch(this);"
を削除して送信すると結果はちゃんと表示されますか?
---------------------------------------------
これがヒントになりました。
Internal Server Errorが出まして、そこから確認してみると
ファイルの転送モードがバイナリになっていることが原因でした。
お恥ずかしい話、CGIはASCIIモードで転送するものだということを
知りませんでした。。。
とても助かりました。ありがとうございました!
No.1
- 回答日時:
出来ればCGIはサーバーで動作させる前にローカルでテストすべきですが・・
シェルが使えるなら、シェルからステップごとに動作を追っていく。
シェルが使えないなら、
print の対象をファイルにして出力している内容をテキストに書き出す。
BEGIN{}コマンドを付け加えて、エラーを書き出す
とか
一番よいのは、シェルから、一行ずつ動作させていくのでしょうが??
>一応、index.cgi の最初の方にメッセージを入れてみたのですが、表示されませんでした。
の意味がわからないのですが、きちんとHTTPD応答ヘッダを書きましたか?
他人のスクリプトを解析して、本人でもわからないエラーを見つけるのは、大変な作業です。ん万円もらっても断る。
とにかく自力で解決してください。
※ローカルにテスト環境を作りましょう。
apacheとactivePerl。CYGWINだとシェルも使える。
早々にご回答いただきありがとうございました。
お恥ずかしい話、私の知識不足で・・・
ファイルの転送モードがバイナリになっていたことが原因でした。
また、アドバイスもありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで集計したい。
-
/bin/awk '{print $5}'ってどう...
-
フォームを再送信しますか?
-
ラズパイでのCGIで、pythonソー...
-
関数Ln(x)の使い方
-
ホームページでCGIのフォームを...
-
apacheでPerl CGIが作動せず、5...
-
utf-8で作成した。formmailのht...
-
python についての質問です
-
docomoの構成プロファイルはど...
-
postmail(UTF-8)でメールが文字...
-
CGIで得た内容をHTMlページに代入
-
めちゃきれい
-
number 改行が追加できない
-
生成AI画像について
-
3DCG
-
ホームページにメールフォーム...
-
cgi アクセス制限 エラー
-
CGIの記述について教えてくださ...
-
CGIの設置が分かりません・・・
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで集計したい。
-
apacheでPerl CGIが作動せず、5...
-
フォームを再送信しますか?
-
(フリーの)ツリー掲示版CGI、...
-
ホームページでCGIのフォームを...
-
/bin/awk '{print $5}'ってどう...
-
CGIって何ですか?簡潔に教えて...
-
cgiからsendmailを送信で文字化け
-
入力フォーム(電話番号)
-
CGI.pmはもう古い!?
-
フォームメールを受信すると文...
-
古ーくからフリーのtree.cgi掲...
-
チェックボックスでのvalue値の...
-
誕生日占いをプログラムで作成...
-
cgiファイルで構成された検索結...
-
VBAで条件から範囲を指定して色...
-
Perl 別ドメインのファイル存在...
-
.htaccessについて
-
number 改行が追加できない
-
JQUERYでウェブのフォームから...
おすすめ情報