Sample code for 30+ languages & platforms
PHP

Get FTP Directory Listing as XML

See more FTP Examples

Demonstrates how to call GetXmlDirListing and parse the results.

Chilkat PHP Downloads

Chilkat2 PHP
<?php

use Chilkat2\Ftp2;
use Chilkat2\Xml;

// This example assumes Chilkat Ftp2 to have been previously unlocked.
// See Unlock Ftp2 for sample code.

$ftp = new Ftp2();

$ftp->Hostname = 'www.my-ftp-server.com';
$ftp->Username = 'mFtpLogin';
$ftp->Password = 'myFtpPassword';

// Connect to the FTP server.
try {
    $ftp->ConnectOnly();

    // Authenticate with the FTP server.
    $ftp->LoginAfterConnectOnly();

    // Retrieve (in XML format) the HOME directory of this FTP account.
    $xmlListing = $ftp->GetXmlDirListing('*.*');
} catch (\Chilkat2\Exception $e) {
    echo $e->getMessage(), "\n";
    exit;
}

// Now load the XML and parse it..
$xml = new Xml();
$xml->LoadXml($xmlListing);
echo $xml->GetXml(), "\n";

// Iterate over the XML...
$i = 0;
$numEntries = $xml->NumChildren;
while ($i < $numEntries) {
    $xEntry = $xml->GetChild($i);
    if ($xEntry->TagEquals('dir')) {
        echo 'Directory: ', $xEntry->Content, "\n";
    } else {
        $sz = $xEntry->GetChildIntValue('size');
        echo 'File: ', $xEntry->GetChildContent('name'), ', size: ', $sz, "\n";
        $xLastMod = $xEntry->FindChild('lastModTime');
        if ($xLastMod !== null) {
            $month = $xLastMod->GetAttrValueInt('m');
            $year = $xLastMod->GetAttrValueInt('y');
            $day = $xLastMod->GetAttrValueInt('d');
            echo '    YYYY-MM-DD: ', $year, '-', $month, '-', $day, "\n";
        }
    }

    $i = $i + 1;
}

$ftp->Disconnect();

echo "Success.\n";

/*
 * Sample XML directory listing:
 * <?xml version="1.0" encoding="utf-8" ?>
 * <remoteDir>
 *     <dir>Desktop</dir>
 *     <dir>Documents</dir>
 *     <dir>Downloads</dir>
 *     <dir>Music</dir>
 *     <dir>Pictures</dir>
 *     <dir>Public</dir>
 *     <dir>Templates</dir>
 *     <dir>Videos</dir>
 *     <file>
 *         <name>c.py</name>
 *         <size>1244</size>
 *         <lastModTime full="20151009-000000" y="2015" d="9" m="10" hh="0" mm="0" ss="0" />
 *     </file>
 *     <file>
 *         <name>cacerts_linux</name>
 *         <size>177207</size>
 *         <lastModTime full="20140915-000000" y="2014" d="15" m="9" hh="0" mm="0" ss="0" />
 *     </file>
 *     <file>
 *         <name>empty.txt</name>
 *         <size>0</size>
 *         <lastModTime full="20150917-000000" y="2015" d="17" m="9" hh="0" mm="0" ss="0" />
 *     </file>
 *     <file>
 *         <name>hamlet.xml</name>
 *         <size>279658</size>
 *         <lastModTime full="20160917-084100" y="2016" d="17" m="9" hh="8" mm="41" ss="0" />
 *     </file>
 * </remoteDir>
 *
 *
 */