2013-07-02 4 views
-2

Здравствуйте, я использую приведенный ниже код для загрузки .zip-файла с сервера, я действительно получаю файл, однако я пытаюсь разархивировать его в папку в том же файле php , но когда я бегу мой сценарий он загружает файл, то это выход я получаю:Как извлечь .zip с php

Это выход я получаю:

File Opening Successful 

Warning: ZipArchive::extractTo() [ziparchive.extractto]: Invalid or unitialized Zip object in /home/content/38/10376438/html/viptravelink/xml/xml3.php on line 48 

Warning: ZipArchive::close() [ziparchive.close]: Invalid or unitialized Zip object in /home/content/38/10376438/html/viptravelink/xml/xml3.php on line 49 
Uncompression Successful 

Это сценарий, я использую:

<?php 
     /* 
     * XML Sender/Client. 
     */ 
     $xmlRequest = '<?xml version="1.0" encoding="utf-8"?> 
        <Request> <Source><RequestorID Client="***" EMailAddress="[email protected]***.com" Password="***" /> <RequestorPreferences Language="en" Currency="USD">   <RequestMode>SYNCHRONOUS</RequestMode> </RequestorPreferences> </Source> <RequestDetails>  <ItemInformationDownloadRequest ItemType="hotel"> 
    <IncrementalDownloads> 
       </IncrementalDownloads> 
      </ItemInformationDownloadRequest> </RequestDetails></Request>'; 

     // We send XML via CURL using POST with a http header of text/xml. 

    $url = 'https://interface.demo.gta-travel.com/rbsusapi/RequestListenerServlet'; 
    $ch = curl_init(); 
    $zipPath = '/home/content/38/10376438/html/viptravelink/xml/' .date('m-d-Y_h-i-s'). '.zip'; 
    $out = fopen($zipPath, 'wb'); 
    echo "File Opening Successful<br>"; 
    if ($out == FALSE){ 
    echo "Download Failed<br>"; 
    exit; 
    } 
     curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_SSLVERSION, 3); // Force SSLv3 to fix Unknown SSL Protocol error 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml')); 
    curl_setopt($ch, CURLOPT_FILE, $out); 
    curl_setopt($ch, CURLOPT_POSTFIELDS,$xmlRequest); 
    curl_setopt($ch,CURLOPT_ENCODING , "gzip"); 
    curl_setopt($ch,CURLOPT_AUTOREFERER , 1); 
    curl_setopt($ch,CURLOPT_MAXREDIRS , 10); 


    curl_setopt($ch, CURLOPT_HEADER, 1); 

    $result=curl_exec($ch); 

    $httpCode = curl_getinfo($ch); 

    curl_close($ch); 
    fclose($out); 

    $zip = new ZipArchive; 
    if (!$zip) { 
      echo "Could not make ZipArchive object.<br>"; 
      exit; 
    } 
    $zip->open('$zipPath'); 
    $zip->extractTo('/home/content/38/10376438/html/viptravelink/xml/content/'); 
    $zip->close(); 
     echo "Uncompression Successful<br>"; 

    ?> 

Любая помощь будет очень удобна reciated !!

Спасибо!

ответ

0

Ваша переменная zipPath $ z не инициализируется, и ваша включающая переменную в одинарные кавычки, которая не будет расширять переменную put, помещает буквальное значение в качестве имени файла. Также ваш параметр CURLOPT_HEADER в 1, который сделает вывод заголовком, а также приведет к недопустимости файла. Решить проблему. установить CURLOPT_HEADER в 0 и установите zip->open($zipPath);

+0

Thankyou за ответ, я изменил на то, что вы сказали мне, файл загружен, но это не распакованные и это выход: 'Открытие файла Успешное Внимание: ZipArchive :: open() ожидает, что параметр 1 будет строкой, ресурс указан в /home/content/38/10376438/html/viptravelink/xml/xml3.php в строке 47 Предупреждение: ZipArchive :: extractTo() [ziparchive.extractto]: Недействительный или униализированный объект Zip в /html/viptravelink/xml/xml3.php в строке 48 Предупреждение: ZipArchive :: close() [ziparchive.close]: Недействительный или униализированный объект Zip в/html/viptravelink/xml/xml3. php on line 49 Uncompression Successful' – enriqg9

+0

Я сделал небольшую ошибку, вы можете установить '$ zip-> open ($ zipPath);' и вы должны быть в порядке. – DevZer0

+0

Это сработало! Огромное спасибо :) – enriqg9

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