What are the best practices for handling multiple directories in a PHP script to create a single backup file?

When handling multiple directories in a PHP script to create a single backup file, it is best practice to recursively iterate through each directory and its files, copying them to the backup file sequentially. This ensures that all files from all directories are included in the backup without missing any. Additionally, it is important to handle any errors that may occur during the backup process to ensure the integrity of the backup file.

<?php

function backupDirectories($directories, $backupFile) {
    $zip = new ZipArchive();
    if ($zip->open($backupFile, ZipArchive::CREATE) !== TRUE) {
        die("Cannot create backup file");
    }

    foreach ($directories as $directory) {
        $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory), RecursiveIteratorIterator::SELF_FIRST);
        
        foreach ($files as $file) {
            if ($file->isFile()) {
                $filePath = $file->getRealPath();
                $relativePath = substr($filePath, strlen($directory) + 1);
                $zip->addFile($filePath, $relativePath);
            }
        }
    }

    $zip->close();
}

// Example usage
$directories = array('directory1', 'directory2');
$backupFile = 'backup.zip';
backupDirectories($directories, $backupFile);

?>