• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CSVファイルのパーミッションは?)

CSVファイルのパーミッションは?

このQ&Aのポイント
  • アクセス集計やCGIで使用されるCSVファイルのパーミッションについて教えてください。
  • ローカルでのテストでは正常に動作しているが、サーバ上での動作がうまくいかない場合の問題です。
  • 試してみたパーミッション設定でも読み込みに失敗している可能性があります。

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

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.5

動作確認したのがローカル(windows)だとすると、そのスクリプトはWindowsで動作することを前提としたスクリプトではないでしょうか。データの問題と言うよりはスクリプトの問題のような気がしてきました。 スクリプトの中に、c:\aaaa\bbbb\ccccのような絶対パス名が含まれていると正しく動作しないと思います。 1.パスはUnixで使用できるパス名になっているか。 2.漢字を使用しているなら漢字コードは、問題ないか。 3.Windowsでのみ使用可能なコマンド(dir等)をスクリプトで使用していないか。 等をチェックしてみては如何でしょうか。

nana_ko
質問者

お礼

ありがとうございます。 残念ながらもともとサーバ上で動かしてあったものなんですよ。 それをいただいて、テスト的に動かしてみてるんです。 もともと載せられていたのはUnixサーバなのでスクリプト事態がWindows上での動作を前提として作られたものではないと思います。 諸事情ありでこのCGIの作成者に質問することができないので(>_<) もう一度念のため確認をしているところなのですが…。 設定等で他に考えられることがあれば、またお願いします。

その他の回答 (5)

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.6

念の為の確認ですが、 1.WindowsのPerlのバージョン 2.サーバ(Unix)のPerlのバージョン 3.元々動いてたサーバのPerlのバージョン(もし判れば) は何でしょうか。(マイナーバージョンも判れば教えて下さい) WindowsがPerl5でサーバ(Unix)がPerl4の場合は、動かない可能性があります。 元々動いてたサーバのPerlのバージョンが判れば、それに今回のサーバのPerlのバージョンを合わせた方が良いかも知れません。

nana_ko
質問者

お礼

ようやくうまく動きました! 原因はやはりOSの違いにあったようです。 スクリプトの一部(正規表現のオプション?)が間違っていたせいでした。 何度もありがとうございましたm(__)m

nana_ko
質問者

補足

ローカルもサーバも、Perlのバージョンはともに5.6です。 元々動いていたサーバのPerlのバージョンは残念ながらわかりません。 他にもいくつかcgiがあって、そっちの方は問題なく動いているので…。

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.4

No3です。 もし、ローカルがWindowsでサーバーがUnixの場合ですが、WindowsでCSVファイルが読めて、Unixで読めない場合は、改行コードの問題があります。 WindowsはCR/LFですがUnixはLFです。 データをサーバーへ移動するとき、バイナリーモードで転送していませんでしょうか。テキストモードで転送しないと、通常は正しく読めないはずです。

nana_ko
質問者

補足

何度もありがとうございますm(__)m お察しの通りローカルはWindows、サーバはUnixです。 改行コードを変更してアスキーモードで再転送したんですが変わりませんでした。 元になるCSVファイルも他のCGIより吐き出されているので改行コードの問題ではないと思うんですが…。

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.3

>エラーはないようです。 >他に考えられることがあるとすれば何かありますか? どのようにして、エラーが無いことを確認されましたか? 例えば $ret = open(FLH,"<$file"); if ($ret == 0){ printf("エラー\n"); }else{ printf("OK\n"); } のようなスクリプトにして、"エラー"の部分が実行されないことを確認されましたでしょうか? できましたら、オープン時のエラー判定部のスクリプトを提示していただけませんでしょうか。(読み込み用と書き込み用) 又、これでエラーが発生していないとすると、入力用のCSVファイルの内容が空であることが考えられます。(ファイルのパス名が正しくなくて、空のファイルを参照しているケースも含みます) 念の為、確認しますが、ローカルで確認した時のOSと サーバで確認したときのOSは同じでしょうか。又、Perlのバージョンは、同じでしょうか?

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

>関連するファイルの存在するディレクトリは705か755に設定してあります。 >なのでディレクトリの問題ではないと思うんですが…。 そうなると、パーッミッションの問題ではないかも知れません。 ファイルのオープン時に戻り値をチェックしてエラーの場合、エラー情報を表示してみたら如何ですか。 エラー情報は、$!と$^Eです。この2つを表示すれば、エラー内容が判ります。

nana_ko
質問者

補足

エラーはないようです。 他に考えられることがあるとすれば何かありますか?

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

ファイルの問題というよりは、そのファイルが存在するディレクトリの問題だとおもいます。そのディレクトリに読み書きのパーミッションがなければ、そのディレクトリ下のファイルは、読み書き出来ません。また、そのディレクトリに実行のパーミッションがなければ、そのディレクトリに移動出来ません。

nana_ko
質問者

補足

関連するファイルの存在するディレクトリは705か755に設定してあります。 なのでディレクトリの問題ではないと思うんですが…。

関連するQ&A