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

始めまして
私は、cahma netさんのcahma cargo「http://chama.ne.jp/download/cargo/index.htm」を使用させてもらっているのですが
httpに配置した「商品データーのcsvファイル」をhttpsに配置したcgiから読み込みたいのですがどうもうまくいきません。パーミッションの問題なのでしょうか?私の借りてるサーバーでは707・777等は、エラーを返されます。それともパーミッション以外に原因などはあるのでしょうか?どなたかお詳しい方教えて下さい!お願いします。

A 回答 (4件)

絶対パスで一番身近なのはPerlのパスだと思います。


CGIの先頭行に

#!/usr/local/bin/perl

とか、書きますよね。この場合、

/usr/local/bin/perl

がPerlへの絶対パスです。
「#!」は宣言みたいなもので、スクリプト内の先行頭で使うだけのものなので混同しないように気を付けてください。
絶対パスというのは / から必ず始まります。
ほとんどのホスティングというのはFTPでログインしたディレクトリより上位階層があるのは先に述べたとおりです。
業者さんに問い合わせるのが早いと思いますが、以下のようなCGIでも調べる事が可能です。

#!/usr/local/bin/perl
print "Content-Type: text/html\n\n";
print $ENV{'SCRIPT_FILENAME'};

適当な名前で保存して(path.cgiとか)実行してみてください。
このCGIの絶対パスが表示されると思います。

下で相対パスの事を書きましたが、
CGIでのファイルの参照は相対でも絶対でもどちらでも構いません。
    • good
    • 0
この回答へのお礼

ありがとうございました!!
出来ました!!何処へ聞いても出来なかったのにikspiariさん私のわかりにくい質問で、すごいです!ホント感謝です!ikspiariさんの言うとおり絶対パスの勘違いでした!有難う御座いました!

お礼日時:2003/04/22 14:28

>

https://www.mydomain.com/cargo/cargo.cgi

これはパスではなくてURLです。
通常CGIでローカルのデータを参照する時には「パス」で指定します。
例えば、httpdocsに置いたCGIから見たカレントディレクトリは ./ です。(httpdoscを指します。)
一つ上の階層は ../ です。
ですので、httpdocsとhttpsdocsが並んでいると仮定して、
httpsdocs内のCGIからhttpdocs内のgoods.csvを参照するには、

../httpdocs/goods.csv

となります。
ちなみにこれは相対パスです。

この回答への補足

なるほどー!では絶対パスで書くとどのようになるのでしょう?
夜遅く申し訳御座いません。

補足日時:2003/04/22 03:35
    • good
    • 0

恐ろしい数のCGIで動いてますね(笑)



ちょっと気になるのは各CGIの依存関係ですね。
多分、全て同じディレクトリ内に設置する事が前提で設計されてるのではないでしょうか?
error_logって見れないのでしょうか?
ログを見ればエラーになってるヒントは掴めると思いますが。

絶対パスって、ちゃんと調べましたか?
通常のホスティングサーバはホームディレクトリにchrootされるので、そこが / だと思ったら違います。
まだ上の階層がありますので。
これも少し気になるところです。

それと補足的なことですが、
個人情報をFTPなどでダウンロードしたらSSL使う意味ないですので注意してください。
FTPは平分でネット上にデータが流れます。

この回答への補足

はい、恐ろしい数です!

>絶対パスって、ちゃんと調べましたか?
通常のホスティングサーバはホームディレクトリにchrootされるので、そこが / だと思ったら違います。
まだ上の階層がありますので。
これも少し気になるところです。

そうなのですか!私は普通に
https://www.mydomain.com/cargo/cargo.cgi
のように書いていたのは絶対パスではないのですか!?
もう一度ikspiariさんにご指摘いただいた事をヒントに見直してみます。かなり勉強になりました!他にお気づきの点が御座いましたらお願い致します。ありがとうございました!

補足日時:2003/04/22 02:30
    • good
    • 0

すみません、ちょっと意味が分からないのですが、


CSVファイルとCGIが置いてあるサーバは物理的に別なのでしょうか?

この回答への補足

さっそくご返答有難う御座いました。
文章が苦手で分かりにくい質問でした、すいませんでした。
CSVファイルとCGIが置いてあるサーバーは物理的には一緒なのです、FTPで見てみるとhttpdocsとhttpsdocsが存在していてカゴCGIは「goods.csv」というCSVファイルの情報を読み込んで商品情報を表示すると言う仕組みになってます。そのカゴCGIは全部で82個のCGIで構成されていてその中の商品を表示する為の3つのCGIファイルとgoods.csvをhttpdocsに配置して残りの79個のCGIはhttpsdocsに配置しています。しかし残りの79個のCGIには、goods.csvの情報を必要とするものがいくつか存在しています、しかしその79個のCGIは個人情報を送信する為のものであったりするのでSSLを使用しておきたいのです、そうすると、goods.csvはhttpdocsとhttpsdocsの両方で必要になってしまいます。しかしhttpdsocsに配置しているCGIにgoods.csvまでの絶対パスを書込み試してみたのですがエラーを返されます。どうにかしてこの峠を越えられないものでしょうか?

さらに分かりにくくなった気が・・・・ごめんないです。

補足日時:2003/04/22 00:56
    • good
    • 0

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