Bug #859: Passive FTP (fopen wrapper) file transfer may fail with NcFTPd server

From: Date: Tue, 20 Oct 1998 13:38:16 +0000
Subject: Bug #859: Passive FTP (fopen wrapper) file transfer may fail with NcFTPd server
Groups: php.dev 
Request: Send a blank email to php-dev+get-1921@lists.php.net to get a copy of this message
From: and@itaca.it Operating system: Digital Unix 3.2D PHP version: 3.0.5 PHP Bug Type: Feature/Change Request Bug description: Passive FTP (fopen wrapper) file transfer may fail with NcFTPd server Using any of the PHP functions to read a file via an FTP URL (fopen, readfile, etc) may fail if the remote FTP server is operated by NcFTP Software's NcFTPd server (v.2.3.2 and below). Running PHP 3 as an Apache 1.3.3 module, the connection fails because the server doesn't accept the SIZE command while in ASCII file transfer mode (which is the default selected mode using the above combination of OS/HTTP server/PHP module). If the transfer mode is set to BINARY the command is understood and the file transfer takes place. Since the php3_fopen_url_wrapper() function in fopen_wrappers.c file switches anyway to binary transfer mode before sending the PASV command, but after having sent the SIZE command, changing the order of FTP commands from: SIZE TYPE I PASV to: TYPE I SIZE PASV would cure the NcFTPd mis-functionality. This has already been successfully tested modifing the fopen_wrappers.c file in the following way: ... /* set the connection to be binary */ SOCK_WRITE("TYPE I\n", *socketd); result = _php3_getftpresult(*socketd); if (result > 299 || result < 200) { free_url(resource); SOCK_FCLOSE(*socketd); *socketd = 0; return NULL; } /* find out the size of the file (verifying it exists) */ SOCK_WRITE("SIZE ", *socketd); SOCK_WRITE(resource->path, *socketd); SOCK_WRITE("\n", *socketd); ... --- Tested case Having the URL ftp://ftp.server.mydomain/thefile in a readfile() function, with ftp.server.mydomain being an NcFTPd FTP server: ftp> ascii 200 Type okay. ftp> size /thefile 502 Not implemented for TYPE A. ftp> binary 200 Type okay. ftp> size /thefile 213 481 -- PHP Development Mailing List http://www.php.net/ To unsubscribe send an empty message to php-dev-unsubscribe@lists.php.net For help: php-dev-help@lists.php.net

« previous php.dev (#1921) next »