• ベストアンサー

httpとhttps間で商品データのcsvファイルを共有する方法

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

質問者が選んだベストアンサー

  • ベストアンサー
  • ikspiari
  • ベストアンサー率48% (29/60)
回答No.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でのファイルの参照は相対でも絶対でもどちらでも構いません。

hide0120
質問者

お礼

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

その他の回答 (3)

  • ikspiari
  • ベストアンサー率48% (29/60)
回答No.3

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

hide0120
質問者

補足

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

  • ikspiari
  • ベストアンサー率48% (29/60)
回答No.2

恐ろしい数のCGIで動いてますね(笑) ちょっと気になるのは各CGIの依存関係ですね。 多分、全て同じディレクトリ内に設置する事が前提で設計されてるのではないでしょうか? error_logって見れないのでしょうか? ログを見ればエラーになってるヒントは掴めると思いますが。 絶対パスって、ちゃんと調べましたか? 通常のホスティングサーバはホームディレクトリにchrootされるので、そこが / だと思ったら違います。 まだ上の階層がありますので。 これも少し気になるところです。 それと補足的なことですが、 個人情報をFTPなどでダウンロードしたらSSL使う意味ないですので注意してください。 FTPは平分でネット上にデータが流れます。

hide0120
質問者

補足

はい、恐ろしい数です! >絶対パスって、ちゃんと調べましたか? 通常のホスティングサーバはホームディレクトリにchrootされるので、そこが / だと思ったら違います。 まだ上の階層がありますので。 これも少し気になるところです。 そうなのですか!私は普通に https://www.mydomain.com/cargo/cargo.cgi のように書いていたのは絶対パスではないのですか!? もう一度ikspiariさんにご指摘いただいた事をヒントに見直してみます。かなり勉強になりました!他にお気づきの点が御座いましたらお願い致します。ありがとうございました!

  • ikspiari
  • ベストアンサー率48% (29/60)
回答No.1

すみません、ちょっと意味が分からないのですが、 CSVファイルとCGIが置いてあるサーバは物理的に別なのでしょうか?

hide0120
質問者

補足

さっそくご返答有難う御座いました。 文章が苦手で分かりにくい質問でした、すいませんでした。 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までの絶対パスを書込み試してみたのですがエラーを返されます。どうにかしてこの峠を越えられないものでしょうか? さらに分かりにくくなった気が・・・・ごめんないです。