札幌Web制作のシンクグラフィカ

サイト内検索で500エラー

こちらの掲示板は終了しました。ご質問などはサポートセンターをご利用ください。

お世話さまです。
メールフォームプロ2の設置もかなり難航していたのですが、最新バージョンに置き換えたら
サクッとOKでした・・・

まぁまぁ、上手く動いた訳なので、これ以上触りません!!

さてすみません、今度はサイト内検索CGIに取り組んでするのですが、
「500 Internal Server Error」が表示されます。

ファイルの設置場所、CGIファイルのutf-8へのエンコード、CGIファイル内のパス、パーミッション等
あれこれ調整してみたのですが、まったく前に進みません。

サポート掲示板も読み漁ったんですが・・・

サーバーはアルファメールのサーバーで、とにかくメールフォームプロ2はきちんと動いています。

絶対グーグルのサイト内検索窓なんて設置したくないんです!

何かヒントをください(>_<)

Re:サイト内検索で500エラー
和田 - 2009-05-08 14:01:16うい~!
perl宣言文(1行目)の下に
use CGI::Carp qw(fatalsToBrowser);
と記述してみてください。エラーの内容が表示されるかも。
変化がありました
コヒ蔵 - 2009-05-08 14:34:14言われたとおりの記述を追加してみました。

現象(1)
空欄で検索ボタンを押すと、添付の通りキーワードを求める画面が表示されるようになりました。
(いままで、これもでなかったんですが)

現象(2)
何かを入れて検索ボタンを押すと、今度はこのエラーが表示されえました。

Software error:
../../public_shtml/script/:Permission denied at /www/a-mail/a-mail25.net/public_html/cgi-bin/site_s_cr/search.cgi line 51.

ちなみに、
CGIファイルの設置場所 /cgi-bin/site_s_cr/ です。
/public_shtml/のフォルダは、初めからサーバー上にあった、デフォルトのフォルダの様ですが、
私は何も触っていないんです・・・
Re:変化がありました
和田 - 2009-05-08 19:01:08search.cgiの51行目にエラーがあるっつーことですね。
51行目にはなんと書いておりますか。
遅くなりました。51行目は・・・
コヒ蔵 - 2009-05-12 08:14:42
if($flag){
while($cnt < @dirs){
$dir = $dirs[$cnt];
51行目→opendir DH, $dir or die "$dir:$!";
while (my $file = readdir DH) {
next if $file =~ /^\.{1,2}$/;
$checkdir = $dir . $file;
if(-d $checkdir){
@machdir = ();
@machdir = grep(/$checkdir/, @notargetdir);
if(@machdir == 0){
#対象がディレクトリの場合
push @dirs, "${dir}${file}/";
}
}
else{

でした。
Re:遅くなりました。51行目は・・・
和田 - 2009-05-12 08:59:08ディレクトリの指定方法が間違ってるか、動かないサーバですね。
ディレクトリはどうやって指定してますか?
ディレクトリの指定
コヒ蔵 - 2009-05-12 14:23:13CGI自体が

cig-bin/site_s_cr/に入っています。
ルートディレクトリからの検索をしたいと考えて以下の通り設定してみました。
------

#ここで指定する階層以下を検索します。
@dirs = ('../../');

#検索結果を表示するときに使うhtmlファイル名を入れてね。
#<!--search-->というコメントをそのhtml内に入れておけばOK
#<!--titles-->というコメントをタイトルタグ内に入れておくとそれっぽいタイトルになるヨ
$templatefile = 'search.html';

#サイト内検索で反映しないページ(検索時に緑色ででてくるパスをコピペしてね)。カンマかスペースで区切って。
$notargetfile = '';
#参照したくないディレクトリのパスを書いてね。なんもない時は、 = ();だけにしちゃって。
@notargetdir = ('../../information/calendar_ex/','../../css/','../../img1/','../../img2/','../../images/','../../inquiry/mailformpro2/','../../Scripts/','../../spry/','../../cgi-bin/','../../secure/');

#ページの要約文(ページ内から一部抽出するテキスト)の範囲指定
#何文字目くらいから
$strstt = 100;
#何文字分くらい抜き取る
$strend = 100;
Re:ディレクトリの指定
和田 - 2009-05-12 14:24:40んーということはcgi-binからpublicにアクセスできないタイプのサーバかもしれませんね・・・。
あきらめるしかないということでしょうか?
unknown - 2009-05-12 15:24:00詳しい事は分かりませんがcgi-binからpublicにアクセスできないという事は
このサーバーではこのCGIは使えない、ということでしょうか?

う・・・残念です。
結局グーグルしかないのかぁ。

丁寧な対応ありがとうございました!
Re:あきらめるしかないということでしょうか?
和田 - 2009-05-12 15:25:05サーバによってはcgi-binの外にCGIがアクセスできないサーバってのがちょいちょいあるので・・・。こちらこそ力が及ばずかたじけない・・・。