PHP + FTP удалить файлы в папке

Я только что написал PHP-скрипт, который должен подключаться к FTP и удалять все файлы в специальной папке.

Похоже на это, но я понятия не имею, какая команда мне нужна, чтобы удалить все файлы в папке журналов.

Любая идея?

<?php

// set up the settings
$ftp_server = 'something.net';
$ftpuser = 'username';
$ftppass = 'pass';

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftpuser, $ftppass);

// delete all files in the folder logs
????????

// close the connection
ftp_close($conn_id);

?>

person Lupo    schedule 01.11.2010    source источник


Ответы (3)


// Delete all files in the folder logs
$logs_dir = "";
ftp_chdir($conn_id, $logs_dir);
$files = ftp_nlist($conn_id, ".");
foreach ($files as $file)
{
    ftp_delete($conn_id, $file);
}    

Возможно, вы захотите выполнить некоторую проверку каталогов, но на базовом уровне это все.

person Reese Moore    schedule 01.11.2010
comment
@Lukas: черт, я даже заранее проверил, что foreach был синтаксисом. xD Спасибо за улов. /Отредактировано - person Reese Moore; 01.11.2010
comment
есть ли где указать определенные расширения файлов для удаления, например * .jpg? - person Dan Cundy; 09.07.2014

Ответы есть в руководстве PHP по функциям FTP.

примечания, добавленные пользователем, содержат полные примеры для "удалить функция «папка». (Обращаться осторожно.)

person Pekka    schedule 01.11.2010

вот мое решение для рекурсивного удаления каталога FTP:

/**
 * @param string $directory
 * @param resource $connection
 */
function deleteDirectoryRecursive(string $directory, $connection)
{
    if (@ftp_delete($connection, $directory)) {
        // delete file
        return;
    }
    # here we attempt to delete the file/directory
    if( !@ftp_rmdir($connection, $directory) )
    {
        if ($files = @ftp_nlist ($connection, $directory)) {
            foreach ($files as $file) {
                // delete file or directory
                deleteDirectoryRecursive( $file, connection);
            }
        }
    }
    @ftp_rmdir($connection, $directory);
}
person Sebastian Viereck    schedule 30.11.2019