Sample code for 30+ languages & platforms
PHP

Delete Local Files that Do Not Exist on the FTP Server

See more FTP Examples

Demonstrates how to get a list of local files in a directory tree that do not exist on the FTP server.

Chilkat PHP Downloads

Chilkat2 PHP
<?php

use Chilkat2\FileAccess;
use Chilkat2\Ftp2;
use Chilkat2\StringArray;

// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

$ftp = new Ftp2();

$ftp->Hostname = 'ftp.example.com';
$ftp->Username = 'login';
$ftp->Password = 'password';

$ftp->KeepSessionLog = true;

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

    // Set the current remote directory to the root of
    // the remote tree to be compared.
    $ftp->ChangeRemoteDir('abc123');

    // Recursively descend the local directory tree
    // and find the files that exist locally but not remotely.
    // These are the files what would be uploaded via
    // the SyncRemoteTree method call with mode = 1.
    // (Mode 1 would upload all files that do not exist on the FTP server.)

    // The actual uploading is avoided by setting the preview-only argument to true.
    $mode = 1;
    $descendTree = true;
    $previewOnly = true;
    $ftp->SyncRemoteTree2('/temp/abc123', $mode, $descendTree, $previewOnly);
} catch (\Chilkat2\Exception $e) {
    echo $e->getMessage(), "\n";
    exit;
}

// The files what would've been uploaded are now available in the SyncPreview property,
// which contains a list of local file paths, one per line.
// A program can iterate over them like this:
$sa = new StringArray();
$sa->LoadFromText($ftp->SyncPreview);

$fac = new FileAccess();

$numFiles = $sa->Count;
$i = 0;
$localFilePath = '';
while ($i < $numFiles) {
    $localFilePath = $sa->GetString($i);
    echo $localFilePath, "\n";

    // An application can delete the file using Chilkat's file access object,
    // or it can choose to use the native file API available in the programming language:
    try {
        $fac->FileDelete($localFilePath);
    } catch (\Chilkat2\Exception $e) {
        echo 'Failed to delete: ', $localFilePath, "\n";
    }

    $i = $i + 1;
}

$ftp->Disconnect();