[PHP-users 5088] Re: ftp_nlist の動きがおかしいです。

Youichi Iwakiri php-users@php.gr.jp
Tue, 29 Jan 2002 22:50:49 +0900


いわきりです

Takeya wrote in <200201290606.AA00551@JC.Takeya>:
 >コマンドライン版のPHPで
 >ftp関数を使ってディレクトリ内の
 >全てのファイルを別ディレクトリに
 >移動させるプログラムを作っている
 >のですが、ファイル一覧取得(ftp_nlist)
 >のところでプログラムが止まってしまい、
 >"FILE NOT FOUND!!"が返ってきます。
 >でも、何回か起動してると、たまに正常に
 >流れる場合もあります。

ftpサーバのresponseが良過ぎるとその現象に出会うようです。
ftpのコマンドポートからレスポンスコードを取得する際に
複数のレスポンスコードが返ってきている場合に発生する
バグだと思われます。

以下のpatchで恐らく問題は解消されると思います。

--- ftp_orig/ftp.c	Sat Nov  4 06:53:24 2000
+++ ftp/ftp.c	Tue Jan 29 22:30:19 2002
@@ -841,6 +841,8 @@
 			(ftp->inbuf[2] - '0');
 
 	memmove(ftp->inbuf, ftp->inbuf + 4, FTP_BUFSIZE - 4);
+	if (ftp->extra)
+		ftp->extra -= 4;
 
 	return 1;
 }