プロが教えるわが家の防犯対策術!

レンタルサーバの自前のファイルサーバからFTP接続にてファイルを取得しようとしているのですが、エラーとなってしまいます。
FTP接続はできているのですが、ファイルの取得に失敗(FALSE)してしまいます。
レンタルサーバの環境は
OS:Linux
PHP:4.4.1
試しにftp_nlist関数にてファイル一覧を取得しようとしましたが、やはり失敗(FALSE)してしまいます。
知り合いのレンタルサーバを借用して全く同じプログラムを実行すると正常に一覧の取得ができました。
FTP接続時・ログイン時にはエラーが発生していないのでFTPでの転送は可能だと思うのですが、全くわかりません。
どなたか分かる方ご教授お願いします。

以下、スクリプトです。
if($ftp=ftp_connect($ftp_host)){
 if(ftp_login($ftp,$ftp_user,$ftp_pass)){
  //ファイルリスト一覧取得
   $file_list=ftp_nlist($ftp,".");
  var_dump($file_list);
  //ファイルダウンロード
   if(!(ftp_get($ftp,$local_file,$remote_file,FTP_BINARY))){
    エラー処理1;
   }
  }
  else{
    エラー処理2;
  }
}
else{
 エラー処理3;
}

A 回答 (1件)

サーバのファイヤウォールの設定によってはFTPサーバへの接続・切断はできても、一覧の取得やファイルの転送が正常に行えない場合があります。


この対処法として、FTPにはpassive modeという動作モードがあります。PHPではftp_pasvというコマンドでmodeを切り替えます。
たとえば、提示されたソースコードでは、$file_list=ftp_nlist($ftp,"."); の直前あたりに下記を追加してみてください。
ftp_pasv($ftp, true);
このコマンドの詳細は下記のドキュメントをご参照ください。
http://jp2.php.net/manual/ja/function.ftp-pasv.php
http://jp2.php.net/manual/ja/function.ftp-nlist. …
なぜpassive modeが必要かについては、下記のURLが参考になります。
http://www.atmarkit.co.jp/fnetwork/rensai/netpro …
http://www.atmarkit.co.jp/fnetwork/rensai/netpro …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ご指示どおりで上手くいきました。
助かりました。
本当にありがとうございました。

お礼日時:2007/03/01 00:19

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