ID:               42492
 User updated by:  php at stock-consulting dot com
 Reported By:      php at stock-consulting dot com
-Status:           Feedback
+Status:           Open
 Bug Type:         FTP related
 Operating System: Windows 2000
 PHP Version:      5.2.4
 New Comment:

Yes, defnitely, I just downloaded it...yesterday? F***! ***! *** ** *
****!!!!! Just checked it (php.exe -v). It's PHP 5.2.3. Okay. Sorry.

Upgraded to 5.2.4 now, checked (php.exe -v), yup, now I'm at 5.2.4!

Yup. I can confirm the bug in 5.2.4 as well. The warning is now:

Warning: ftp_get(): PORT command only accepts client IP address
(80.x.x.x!=
10.0.0.1). in my_script.php on line 71

Best regards, Klaus


Previous Comments:
------------------------------------------------------------------------

[2007-08-31 11:27:49] [EMAIL PROTECTED]

And you're really using PHP 5.2.4?

------------------------------------------------------------------------

[2007-08-31 11:15:27] php at stock-consulting dot com

Description:
------------
Situation: the local machine, which executes the PHP script via the
command line, sits behind a NAT firefall and needs to retrieve directory
listings and files from an FTP server sitting somewhere on the Internet.
Passive FTP is required to traverse the firewall. The local machine has
the IP address 10.0.0.1 (subnet configured as Class C). The external
(WAN) IP of the router/firewall is 80.x.x.x (address partially concealed
to protect the, erm, innocent).

Now the problem: the script correctly connects to the FTP server and
begins to retrieve directory listings (recursively) and files. At some
RANDOM point, the following warning appears:

Warning: ftp_chdir(): PORT command only accepts client IP address
(80.x.x.x
!=10.0.0.1). in my_script.php on line 40

This warning then appears both at all further attempts to retrieve
directory listings and files. The transfers are not successful.

Note that directory and file retrieval works perfectly UNTIL the
warning occurs for the first time, at some random time. When the script
is restarted, it will again work for some listings and files, until, at
some different point, the warning will appear again.

Reproduce code:
---------------
// Short version, stripped from anything which appeared not so useful
for this bug report
function remote_scan($path) {
global $ftp;

        ftp_chdir($ftp, $path);
        $raw_entries = ftp_rawlist($ftp, $path);
        foreach ($raw_entries AS $line) {
                $entry = preg_split('@\s+@', $line, 9);
                if ($entry[4] == 0) {
                        remote_scan($path . $entry[8] . '/');
                } else {
                        ftp_get($ftp, 'x:/local_path' . $path . $entry[8], 
$path .
$entry[8], FTP_BINARY);
                }
        }
}


$ftp = ftp_connect('ftp.url', 47624); // server uses non-standard port
$login_result = ftp_login($ftp, 'user', 'password'); 
ftp_pasv($ftp, true);
remote_scan('/');
ftp_close($ftp);



------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=42492&edit=1

Reply via email to