1

更新ファイルのフォルダーをいくつかのWebサイトにアップロードするコードに取り組んでいます。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という名前のフォルダがあります。この関数を実行するたびに、scriptsフォルダーがアップロードされません。また、すべてのファイルをフォルダーにアップロードしようとすると、scriptsフォルダーが存在しないというエラーが発生します。私は何かを見落としているのか、それとも何を見落としているのかわかりませんが、この問題についての助けをいただければ幸いです。

4

0 に答える 0