アプリ版:「スタンプのみでお礼する」機能のリリースについて

アクセス集計等のCGIで、CSVファイルを使用しています。
元になるデータと、吐き出されるデータはCSVファイルになっているんですが、サーバ上で上手く動きません。
ローカルでテストした段階では、データの読み込みも吐き出しも正常に動作しています。
なので、おそらくパーミッションの設定の問題だと思われるんですが…とりあえず、600・606.666と試してみたんですが、読み込みに失敗しているような感じです。
CSVのパーミッションは一般的に666が使われると思っていたんですが…。
複数のファイルから結果を出すような形なので、CSVファイルも個別に設定する必要があるんでしょうか?
よろしくお願いしますm(__)m

A 回答 (6件)

動作確認したのがローカル(windows)だとすると、そのスクリプトはWindowsで動作することを前提としたスクリプトではないでしょうか。

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

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

お礼日時:2003/10/29 17:20

念の為の確認ですが、


1.WindowsのPerlのバージョン
2.サーバ(Unix)のPerlのバージョン
3.元々動いてたサーバのPerlのバージョン(もし判れば)

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

この回答への補足

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

補足日時:2003/10/30 09:26
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/10/30 16:13

No3です。


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

この回答への補足

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

補足日時:2003/10/29 15:09
    • good
    • 0

>エラーはないようです。


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

>関連するファイルの存在するディレクトリは705か755に設定してあります。


>なのでディレクトリの問題ではないと思うんですが…。

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

この回答への補足

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

補足日時:2003/10/29 11:46
    • good
    • 0

ファイルの問題というよりは、そのファイルが存在するディレクトリの問題だとおもいます。

そのディレクトリに読み書きのパーミッションがなければ、そのディレクトリ下のファイルは、読み書き出来ません。また、そのディレクトリに実行のパーミッションがなければ、そのディレクトリに移動出来ません。

この回答への補足

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

補足日時:2003/10/28 12:35
    • good
    • 0

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