dポイントプレゼントキャンペーン実施中!

カテゴリがデータベースではなく、CGIのようなので、移動しました。

CGIROOMさんの「簡易高機能検索専用データベース SJIS版 Ver 2.04」を使おうとしています。中田 昭雄さんのhttpd 1.42pを使ってオフラインでの動作を確認した後、以下のようにサーバに設置しました。

/┐
 ├anon_ftp
 ├bin
 ├cgi-bin┐
 |    ├database.cgi[755]
 |    ├jcode.pl
 |    ├onlyone.pl
 |    └jtc.csv(CSVデータ)
 |
 ├conf
 ├error_docs
 ├httpdocs┐
 |    ├index.html
 |    ├area_1.html
 |    ├(etc)
 |
 ├httpsdocs┐
 |     ├html.htm(データ検索表示用)
 |     ├html3.htm(データ検索表示用)
 |
 ├pd
 ├private
 ├statistics
 ├subdomains
 └web_users

こうしたところ、「データファイルを開けません」と表示されて困っています。

パスの設定は
1.area_1.html
<FORM action="../cgi-bin/jtc/database.cgi" method="GET">
<blockquote>


2.database.cgi

# 初期設定

#◆ jcode.plまでのパス
$require = './jcode.pl';

#◆ onlyone.plまでのパス
$onlyonepl= './onlyone.pl';


#◆ データファイルまでのパス
$SEEK{'default'} = './jtc.csv';

#◆ テンプレートファイル設定
$html{'default'} = '../../httpsdocs/jtc/html.htm';
$html{'list3'} = '../../httpsdocs/jtc/html3.htm';

です。CSVの格納場所が悪いのか、パス設定が悪いのか、ご指摘お願いしたくよろしくお願いします。

A 回答 (3件)

「データファイルが見つかない」だけでは、漠然としていて状況がよくわかりません。


Perl にはグロブや opendir やファイルテスト演算子などが用意されているので、
簡単な CGI を作って調べてみてはいかがでしょうか。次の CGI プログラムは、パスが
間違っていればその旨を、パスが合っている場合はそのディレクトリのファイルリスト
をブラウザに表示します。

#!/usr/bin/perl
use strict;
use CGI::Carp qw(fatalsToBrowser);

opendir DIR, "../../httpdocs" or die "Can't open $!";

print "Content-type: text/html\n\n";

print "<html><head><title>Path Check</title></head><body>\n";
while (my $file = readdir DIR) { print "$file<br>\n"; }
print "</body></html>\n";

closedir DIR;
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
こうやって確認するのですね。勉強になりました。

Pleskレンタルサーバでは
「cgi-binがhttpdocs(インターネット上のルートディレクト
リ)の外にある理由はプログラムを配置する上で、外部からの
アクセスを排除するためですが、実際上はhttp:// から始まる
アドレスでアクセスできないといけないわけで、
実際の呼び出しはhttp://www.g-rest.com/cgi-bin/cgiファイル

いう構造になります。そのため、データファイルが、仮にcgi
と同じディレクトリにある場合には、構造上は、ルートの上の
ディレクトリから呼び出すか、
http://www.g-rest.com/cgi-bin/jtc/データファイル
という風にしなくてはなりません。」
が、特にcgi-binにCGIソースを置く必要はない(どこでもいい
そうです)とのことで、
 httpdocs/CGI/databese.cgi
httpdocs/CGI/jtc.csv

cgiでのcsvへのデータpathを ../CGI/jtc.csv

とすることで解決しました。
ご回答くださった皆様、ありがとうございました。

お礼日時:2009/07/22 23:26

Web サーバーの設定によっては、cgi-bin 等の cgi ディレクトリは cgi の専用になって


いて、画像ファイルや csv 等のデータファイルを置けない場合があります。csv ファイル
を httpdocs 等の他のディレクトリの配下に移動してテストしてみては?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
jct.csvを httpdocs、httpsdocs、anon_ftp、privateの下に順次コピーして、
database.cgiのパス設定を
../../httpdocs/jct.csv
../../httpsdocs/jct.csv
../../anon_ftp/jct.csv
../../private/jct.csv
にその都度書き換えてみましたが、「データファイルが見つからない」のままでした。

お礼日時:2009/07/20 20:55

<FORM action="../cgi-bin/jtc/database.cgi" method="GET">



<FORM action="../cgi-bin/database.cgi" method="GET">

$html{'default'} = '../../httpsdocs/jtc/html.htm';
$html{'list3'} = '../../httpsdocs/jtc/html3.htm';

$html{'default'} = '../../httpsdocs/html.htm';
$html{'list3'} = '../../httpsdocs/html3.htm';

ぱっと見たところこのへんでしょうか。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
掲載したディレクトリ構造が古かったのですが、
「cgi-binの直下でないといけないかも?」とファイルを移動しパスを書き直して
実験してみましたが変わりませんでした。

正しいディレクトリ構造を載せ直します。
/┐
 ├anon_ftp
 ├bin
 ├cgi-bin┐
 |    └jct┐
 |      ├database.cgi[755]
 |      ├jcode.pl
 |      ├onlyone.pl
 |      └jtc.csv(CSVデータ)
 |
 ├conf
 ├error_docs
 ├httpdocs┐
 |    ├index.html
 |    ├area_1.html
 |    ├(etc)
 |
 ├httpsdocs┐
 |     └jct┐
 |        ├html.htm(データ検索表示用)
 |        ├html3.htm(データ検索表示用)
 |
 ├pd
 ├private
 ├statistics
 ├subdomains
 └web_users


なお、レンタルサーバは Plesk です。

お礼日時:2009/07/20 17:55

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