1

我正在编写一个将更新文件文件夹上传到多个网站的代码。我一直在尝试使用以下功能将所有文件和文件夹上传到 FTP 帐户。在这种情况下,包含文件的本地文件夹被命名为“files”,并且所有文档都被上传到 ftp 帐户的父目录。

功能

function upload_dir($dirname,$conn_id) {
    $dir_array=array();
   if (is_dir($dirname))
      $dir_handle = opendir($dirname);
   if (!$dir_handle)
      return false;
   while($file = readdir($dir_handle)) {
      if ($file != "." && $file != "..") {
         if (!is_dir($dirname."/".$file)){
             $dirname2= str_replace('files','',$dirname);
             if($dirname2[0]=='/'){
                $dirname2 = substr($dirname2, 1);
             }
             ftp_put($conn_id, $dirname2."/".$file, $dirname."/".$file, FTP_BINARY);
         }
         else{
             $dirname2= str_replace('files','',$dirname);
             if($dirname2[0]=='/'){
                  $dirname2 = substr($dirname2, 1);
             }

             if(in_array($dirname2.'/'.$file, $dir_array)){
                 upload_dir($dirname.'/'.$file,$conn_id);
             }
             else{
                 array_push($dir_array, $dirname2.'/'.$file);
                 // check if directory exists before trying to create it
                    $filename = $dirname2.'/'.$file;
                    if (file_exists($filename)) {
                    } else {
                      ftp_mkdir($conn_id,$dirname2.'/'.$file);
                    }
                 upload_dir($dirname.'/'.$file,$conn_id);
             }
         }
      }
   }
   closedir($dir_handle);
   return true;
}

代码

// Ftp All data to new server
$ftp_server = "ftp.mywebsite.com";
// set up basic connection
$conn_id = ftp_connect($ftp_server); 
// login with username and password
$login_result = ftp_login($conn_id, 'username', 'password'); 
// check connection
if ((!$conn_id) || (!$login_result)) { 
$reply  = "FTP connection has failed!";
$reply .= "Attempted to connect to $ftp_server for user zerozill@".$option1; 
exit; 
} else {
$reply = "Connected to $ftp_server, for user annon";
upload_dir('files',$conn_id);
}
// close the FTP stream 
ftp_close($conn_id);

我遇到的问题是该功能在大多数情况下都有效,但由于某种原因它有时会拒绝上传文件夹。例如,我有一个名为 scripts 的文件夹。每次我运行此功能时,它都不会上传脚本文件夹。同样,它仍会尝试将所有文​​件上传到文件夹,从而创建脚本文件夹不存在的错误。我不知道我是否忽略了某些东西或什么,但对此事的任何帮助表示赞赏。

4

0 回答 0