• 締切済み

CGIROOMさんのデータベースでCSVファイルが読めません。

カテゴリがデータベースではなく、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の格納場所が悪いのか、パス設定が悪いのか、ご指摘お願いしたくよろしくお願いします。

みんなの回答

  • kumoz
  • ベストアンサー率64% (120/185)
回答No.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;

Jey_tee
質問者

お礼

回答ありがとうございます。 こうやって確認するのですね。勉強になりました。 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 とすることで解決しました。 ご回答くださった皆様、ありがとうございました。

すると、全ての回答が全文表示されます。
  • kumoz
  • ベストアンサー率64% (120/185)
回答No.2

Web サーバーの設定によっては、cgi-bin 等の cgi ディレクトリは cgi の専用になって いて、画像ファイルや csv 等のデータファイルを置けない場合があります。csv ファイル を httpdocs 等の他のディレクトリの配下に移動してテストしてみては?

Jey_tee
質問者

お礼

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

すると、全ての回答が全文表示されます。
回答No.1

<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'; ぱっと見たところこのへんでしょうか。

Jey_tee
質問者

お礼

ご回答ありがとうございます。 掲載したディレクトリ構造が古かったのですが、 「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 です。

すると、全ての回答が全文表示されます。

関連するQ&A