2012-04-12 1 views
1

Hey Leute, ich habe mein Skript hier, das soll tun einige Sachen dann löschen Sie eine Datei, leider meine Dateien nie aufheben. Ich frage mich, was der Grund dafür sein könnte? Berechtigungen waren das Einzige, was ich mir vorstellen konnte, oder vielleicht ist der Ausgabepuffer kaputt? Ich weiß es wirklich nicht, aber würde mir einen Ratschlag geben, wie ich damit umgehen soll Es handelt sich um das letzte IF() Block.FTP_DELETE funktioniert nicht?

public function remoteFtp() { 
    $enabled = Mage::getStoreConfig('cataloginventory/settings/use_ftp'); 
    $remove = Mage::getStoreConfig('cataloginventory/settings/ftp_remove_file'); 
    if ($enabled == 0) { 
     return true; 
    } 

    $base_path = Mage::getBaseDir('base'); 


    $ftp_url = Mage::getStoreConfig('cataloginventory/settings/ftp_url'); 
    $ftp_user = Mage::getStoreConfig('cataloginventory/settings/ftp_user'); 
    $ftp_pass = Mage::getStoreConfig('cataloginventory/settings/ftp_password'); 
    $ftp_remote_dir = Mage::getStoreConfig('cataloginventory/settings/ftp_remote_dir'); 
    $ftp_filename_filter = Mage::getStoreConfig('cataloginventory/settings/ftp_remote_filename'); 

    $ftp_file = $base_path . '/edi/working/working.edi'; 

    $handle = fopen($ftp_file, 'w'); 
    $conn_id = ftp_connect($ftp_url); 

    ftp_login($conn_id, $ftp_user, $ftp_pass) or die("unable to login"); 

    if ($ftp_remote_dir) { 
     ftp_chdir($conn_id, $ftp_remote_dir); 
    } 

    //is there a file 
    $remote_list = ftp_nlist($conn_id, "."); 

    $exists = count($remote_list); 

    if ($exists > 0) { 
     $len = strlen($ftp_filename_filter) - 1; 


     foreach ($remote_list as $name) { 
      if (substr($ftp_filename_filter, 0, 1) == "*") { 

       if (substr($name, '-' . $len) == substr($ftp_filename_filter, '-' . $len)) { 
        $ftp_remote_name = $name; 
       } 
      } 
      if (substr($ftp_filename_filter, strlen($name) - 1) == "*") { 
       if (substr($ftp_filename_filter, 0, $len) == substr($name, 0, $len)) { 
        $ftp_remote_name = $name; 
       } 
      } 
      if ($ftp_filename_filter == $name) { 
       $ftp_remote_name = $name; 
      } 
     } 
    } 


    if (ftp_fget($conn_id, $handle, $ftp_remote_name, FTP_ASCII, 0)) { 
     echo "successfully written to $ftp_file <br />"; 
     if ($remove == 1) { 
      ftp_delete($conn_id, $ftp_remote_name); 
     } 
    } else { 
     echo "There was a problem while downloading $ftp_remote_name to $ftp_file <br />"; 
    } 

    ftp_close($conn_id); 
} 
+1

Wenn Sie dachten, Berechtigungen festgelegt wurde das Problem sein könnte, können Sie sie überprüfen haben? – ceejayoz

+1

Funktioniert es, wenn Sie es manuell mit einem GUI-FTP-Client versuchen? – DaveRandom

+0

@ceejayoz Ich habe die Berechtigungen überprüft, als FTP-Benutzer sind sie bei 0777, es funktioniert auf einem GUI-Client, und ich verwende die genaue gleiche Anmeldeinformationen – ehime

Antwort

2

die Antwort war, dass die Systemvariable $remove = Mage::getStoreConfig('cataloginventory/settings/ftp_remove_file'); auf BOOL (false)

Verwandte Themen