【问题标题】:How to delete all but the latest .csv file in a ftp using php [duplicate]如何使用php删除ftp中除最新的.csv文件之外的所有文件[重复]
【发布时间】:2022-10-04 23:27:13
【问题描述】:

我想删除几个 ftp 目录中除了最新的 .csv 文件之外的所有文件。我希望它是一个 php 脚本,这样我就可以设置一个 cron

我找到并使用以下脚本删除所有但不确定如何编辑它以保留最新文件,除非有更好的方法

<?php


define('PATH', '/var/www/vhosts/xxx');
define('PATH', '/var/www/vhosts/xxx');
define('PATH', '/var/www/vhosts/xxx');

function destroy($dir) {
$mydir = opendir($dir);
while(false !== ($file = readdir($mydir))) {
    if($file != "." && $file != "..") {
        chmod($dir.$file, 0777);
        if(is_dir($dir.$file)) {
            chdir('.');
            destroy($dir.$file.'/');
            rmdir($dir.$file) or DIE("couldn't delete $dir$file");
        }
            else
               unlink($dir.$file) or DIE("couldn't delete $dir$file");
    }
}
   closedir($mydir);
}
    destroy(PATH);
    echo 'all done.';


?>

【问题讨论】:

  • 您的代码适用于本地文件,而不适用于 FTP。这是故意的吗?那么你没有FTP问题。
  • 我已经在我的服务器上使用了上面的代码
  • 这就是我的假设。所以这不是FTP问题。

标签: php


【解决方案1】:

删除旧文件:

   $fname__path = "csv/cache/";                         
          $dhandle = opendir($fname__path); 
          $files = array();

          if ($dhandle) 
          {         
            while (false !== ($fname = readdir($dhandle))) 
             { 
               if (($fname != '.') && ($fname != '..') &&  ($fname != basename($_SERVER['PHP_SELF']))) 
                {         
                   //$files[] = (is_dir( "./$fname" )) ? "(Dir) {$fname}" : $fname;
                   $czas = filemtime($fname__path.$fname);
                   if( $czas < (time() - 3600) )  {  unlink($fname__path.$fname); };               
                }
            }   
            closedir($dhandle);
          }

【讨论】:

  • 它尝试了这个并获得了权限被拒绝
  • 从 linux 命令行尝试命令 sudo chown www-data /your_dir -R 和 sudo chmod u+rwx /your_dir
  • 检查你的 apache 的日志
猜你喜欢
  • 2017-07-01
  • 1970-01-01
  • 2016-09-25
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-03
相关资源
最近更新 更多