tags:

views:

50

answers:

1

I'm developing a PHP App on IIS 7.5, which uses PHP FTP commands.

These all work, apart from ftp_size().

I've tested:

cmd.exe > ftp host > username > password > SIZE filename = Invalid Command

However, if I access the FTP site through an Internet Browser, the filesize is displayed.

Do I need to install FTP Extensions, and if so, which ones and where do I get them?

Here is the PHP Code:

<?php
// FTP Credentials
$ftpServer = "www.domain.com";
$ftpUser = "username";
$ftpPass = "password";

// Unlimited Time
set_time_limit(0);

// Connect to FTP Server
$conn = @ftp_connect($ftpServer)
or die("Couldn't connect to FTP server");

// Login to FTP Site
$login = @ftp_login($conn, $ftpUser, $ftpPass)
or die("Login credentials were rejected");

// Set FTP Passive Mode = True
ftp_pasv ($conn, true);

// Build the file list
$ftp_nlist = ftp_nlist($conn, ".");

// Alphabetical sorting
sort($ftp_nlist);

// Display Output
foreach ($ftp_nlist as $raw_file) {
    // Get the last modified time
    $mod = ftp_mdtm($conn, $raw_file);
    // Get the file size
    $size = ftp_size($conn, $raw_file);
    // Size is not '-1' => file
      if (!(ftp_size($conn, $raw_file) == -1)) {
        //output as file
        echo "Filename: $raw_file<br />";
        echo "FileSize: ".number_format($size, '')."Kb</br>";
        echo "Last Modified: ".date("d/m/Y H:i", $mod)."</br>";
      }
}
?>
A: 

I just ran your code against one of our FTP servers and it works just fine. It's probable that the FTP server you're testing against doesn't actually support the SIZE command after all.

The reason your web browser works,and I checked this with a packet sniffer against Firefox and Internet Explorer, is because they issue the LIST command and parse the results.

Kev