2010-11-01 2 views
3

Я просто написал 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); 

?> 

ответ

12
// 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); 
}  

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

+1

Вы имеете в виду «foreach» - не «для» - но работает !! большой thx !! – Lukas

+0

@Lukas: Черт, я даже дважды проверил, что foreach был синтаксисом заранее. xD Спасибо за улов./Edited –

+0

есть ли где указать конкретные расширения файлов для удаления, как * .jpg? –

1
<?php 

# server credentials 
$host = "ftp server"; 
$user = "username"; 
$pass = "password"; 

# connect to ftp server 
$handle = @ftp_connect($host) or die("Could not connect to {$host}"); 

# login using credentials 
@ftp_login($handle, $user, $pass) or die("Could not login to {$host}"); 

function recursiveDelete($directory) 
{ 
# here we attempt to delete the file/directory 
if(!(@ftp_rmdir($handle, $directory) || @ftp_delete($handle, $directory))) 
{ 
# if the attempt to delete fails, get the file listing 
$filelist = @ftp_nlist($handle, $directory); 

# loop through the file list and recursively delete the FILE in the list 
foreach($filelist as $file) 
{ 
recursiveDelete($file); 
} 

#if the file list is empty, delete the DIRECTORY we passed 
recursiveDelete($directory); 
} 
} 
?> 
Смежные вопросы