ID: 39583 Updated by: [EMAIL PROTECTED] Reported By: ts dot serveroperations at wmdata dot com -Status: Open +Status: Feedback Bug Type: FTP related Operating System: Redhat Enterprise ES version 4 PHP Version: 4.4.4 New Comment:
>downloaded and viewed in windows XP with notepad. Please get a decent TXT viewer instead of notepad. AFAIK it was never able to display Unix line endings properly. Does your FTP server understand "TYPE A" command? Previous Comments: ------------------------------------------------------------------------ [2006-11-22 10:29:31] ts dot serveroperations at wmdata dot com Description: ------------ The ftp function always transfer files in binary mode which results in textfiles being corrupted with no newlines. The configure line we used is ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --enable-module=so --enable-ftp We have not made any changes to php.ini. We tested on both the latest CVS snapshot and PHP 4.4.4 The code below expects a file named testfile.txt to be located in /var/www/html/ and a ftp server on localhost with user test, password test, address localhost and a folder named testdir. When we look in the logfile of the ftp server we see that the file actually was transferred in binary mode, we tried 2 different ftp servers with the same result. The ftp server and webserver are on the same machine (Linux Redhat), the php page is browsed from a windows XP computer and testfile.txt is downloaded and viewed in windows XP with notepad. This bug resembles Bug #19036 but this is between windows and linux which uses different newline characters. Therefore we must use ascii mode. Reproduce code: --------------- <?php // set up basic connection $ftp_server = "localhost"; $ftp_user_name = "test"; $ftp_user_pass = "test"; $conn_id = ftp_connect($ftp_server); // login with username and password $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); // check connection if ((!$conn_id) || (!$login_result)) { echo "FTP connection has failed!"; echo "Attempted to connect to $ftp_server for user $ftp_user_name"; exit; } else { echo "Connected to $ftp_server, for user $ftp_user_name"; } $source_file = "/var/www/html/testfile.txt"; $destination_file = "/testdir/testfile.txt"; // upload the file $upload = ftp_put($conn_id, $destination_file, $source_file, FTP_ASCII); // check upload status if (!$upload) { echo "FTP upload has failed!"; } else { echo "Uploaded $source_file to $ftp_server as $destination_file"; } // close the FTP stream ftp_close($conn_id); ?> Expected result: ---------------- That the file was transferred in ascii mode and that the ftp server logfile would confirm that. Actual result: -------------- The file was transferred in binary mode. This was verified when opening the textfile and the newlines are gone, replaced by 3 squares. Also the ftp server logfile states that the transfer was in binary mode. This is true for both uploads and downloads. FTP server works as expected when using a regular ftp application e.g. flashfxp, filezilla etc. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=39583&edit=1