- 締切済み
PerlでFTPアクセスし指定ファイルをアップデートしたい
先日質問してから、いろいろと調べて、okwebのサイト検索から以下の内容を発見しました。 「サーバー間でファイルコピーしたい」 http://okwave.jp/qa2052204.html 試しに以下のプログラムをサーバーに設置して実行いたしました。 (ここから) #!/usr/bin/perl use CGI::Carp qw(fatalsToBrowser); use Net::FTP; $ftp = Net::FTP->new('サーバー名'); $ftp->login("ユーザーID", "パスワード"); $ftp->cwd('cm'); $ftp ->ascii(); $ftp->get("index.html"); $ftp ->binary(); $ftp->get("top.jpg"); $ftp->quit; exit; (ここまで) 500のサーバーエラーが表示されるのですが、サーバーにデータはダウンロードされました。 このエラーが表示されたのになぜ動作しているのか? と、エラーができなくなるにはどうしたらよいでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- JavaJavax2
- ベストアンサー率22% (68/305)
それでいいはずだけど?エラー表示はどうなりました? Content-type:text/html は細かいけど、一応スペースじゃね? Content-type: text/html あんま影響ないと思うけど・・・ 追加した部分を削除してもう一度試してみ? それで成功すればその部分が影響してるって事だけど 特に気になる点はみられないな。 この場合エラーは報告されないからわからないけど FTPあたりでネットワークエラーが発生してるのかもね。 suexecとかどっかのログとか見れば分かるのかもわからんけど。
- mattalix
- ベストアンサー率62% (47/75)
>このエラーが表示されたのになぜ動作しているのか? httpdから実行されたプログラム自体は正常に動いたが、 httpdが当然期待してるプログラムからのoutputがないので、 httpdから見たらプログラムは正常に動作してない だからエラー扱いして500を出した >と、エラーができなくなるにはどうしたらよいでしょうか? まっとうにoutputを出す No.1は一般論としては良いですが今回のケースでは少し違います
お礼
mattalixさん 回答ありがとうございます。 >まっとうにoutputを出す なるほど。例えば printで表示させるとかすればよいのでしょうか? (ここから) #!/usr/bin/perl use CGI::Carp qw(fatalsToBrowser); use Net::FTP; $ftp = Net::FTP->new('サーバー名'); $ftp->login("ユーザーID", "パスワード"); $ftp->cwd('cm'); $ftp ->ascii(); $ftp->get("index.html"); $ftp ->binary(); $ftp->get("top.jpg"); $ftp->quit; print "Content-type:text/html; charset=Shift_JIS\n\n"; print "おしまい\n"; exit; (ここまで) としたのですが、今度は何もダウンロードできなくなってしまいました。(汗) なんなんだったのでしょうか? 何がどうおかしくなったのかわかりません。
- kyotokyo
- ベストアンサー率35% (27/77)
エラー番号500は Internal Server Errorと呼ばれており CGI等の処理に間違いがある場合に発生するエラーとなります。 サーバーによって ActivePerlの設定等が違うので一概にいえませんが モジュールに問題が発生しているか 文法ミスのどちらかだと思います。 一行ずつソースを消したり加えたりしながら どの行でエラーが出ているのか特定するしかないと思います
お礼
kyotokyoさん 回答ありがとうございます。 通常500エラーの場合は、何も処理されないかな? と思っていたので、ちょっと不思議でした。 回答感謝いたします。
補足
JavaJavax2さん 回答ありがとうございます。 >それでいいはずだけど?エラー表示はどうなりました? エラーのまま変化がありません。 >Content-type: text/html >あんま影響ないと思うけど・・・ これも試してみましたがダメでした。 >この場合エラーは報告されないからわからないけど >FTPあたりでネットワークエラーが発生してるのかもね。 そうかもしれませんね。 ちっょと違うサーバーでやってみて同じ結果かどうか試して見たいと思います。 ありがとうございます。