2016-03-16 2 views
0

У меня есть эти строки кода, который загружает файл по FTP. После загрузки мне нужно разархивировать файл. Проблема возникла, файл успешно загружен, но я не могу разархивировать его. Кто-нибудь может мне с этим помочь?PHP Unzip после загрузки FTP

if(isset($_POST['submit'])){ 
    $file = $_FILES['uploaded_file']['name']; 
    $remote_file = $_FILES['uploaded_file']['name']; 

    $ftp_server = "1xx.xx.xx.xx"; 
    $ftp_user_name = "xxuser"; 
    $ftp_user_pass = "xx2016"; 
    $toform2 = "FormType/Upload/"; 
    $tounzip2 = "Unzip/"; 

    // set up basic connection 
    $conn_id = ftp_connect($ftp_server); 

    // login 
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
    ftp_pasv($conn_id, true); 

    // upload the file 
    $ftype = substr ($file,0,2); 
    if ($ftype == "F2") { 
     ftp_chdir ($conn_id,$toform2); 
     $upload = ftp_put($conn_id,$remote_file,$file,FTP_ASCII); 
     $file_path = $toform2; 

     // check upload status 
     if($upload){ 
     // Unzip file 
     $zip = new ZipArchive();    
     $x = $zip->open($toform2); 
     if ($x === true) { 
      ftp_chdir ($conn_id,$tounzip2); 
      $zip->extractTo($tounzip2); 
      $zip->close(); 
      echo "success"."</br>"; 
     }else{ 
      echo "fail"; 
     } 
     //echo "Uploaded $source_file to $ftp_server as $destination_file" ; 
    }else{ 
     //echo "FTP upload has failed!" ; 
    } 


} 
+0

ZipArchive работает с локальными файлами, а не удаленными файлами ftp. – fusion3k

ответ

0

Если сценарий имеет доступ по SSH к удаленному серверу, вы можете ssh2-EXEC удаленный скрипт для распаковки файла.

SSH2-Connect: http://php.net/manual/en/function.ssh2-connect.php

SSH2-Exec: http://php.net/manual/en/function.ssh2-exec.php

Сначала загрузите файл с помощью FTP. (SFTP будет лучше)

Открыть SSH-соединение и выполнить команду unzip удаленно.

Смежные вопросы