2014-01-23 3 views
1

Я пытаюсь написать php (новый для php), который загружает zip-файл с удаленного сервера с помощью curl и распаковывает его в каталог темы wordpress. Распаковка через php не дает отчета о результате 19, который из того, что я нашел, не указывает на zip-файл. Однако, когда я проверяю каталог, там находится zip-файл. Если я разархивирую его, я получаю файл zip.cpgz. Я не уверен, что это проблема с моим кодом или это способ отправки файла сервером. Вот мой код. Благодарю.Загрузка zip-файла из curl-результатов в файл cpgz после распаковки

$dirpath = dirname(__FILE__); 
$themepath = substr($dirpath, 0, strrpos($dirpath, 'wp-content') + 10)."/themes/"; 
//make call to api to get site information 
$pagedata = file_get_contents("https://ourwebsite/downloadzip.php?industryid=$industry"); 
$jsondata = json_decode($pagedata); 

$fileToWrite = $themepath.basename($jsondata->zip_file_url); 

$zipfile = curl_init(); 
curl_setopt($zipfile, CURLOPT_URL, $jsondata->zip_file_url); 
curl_setopt($zipfile, CURLOPT_HEADER, 1); 
curl_setopt($zipfile, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($zipfile, CURLOPT_BINARYTRANSFER, 1); 
$file = curl_exec($zipfile); 

if ($file == FALSE){ 
    echo "FAILED"; 
}else{ 
    $fileData = fopen($fileToWrite,"wb"); 
    fputs($fileData,$file); 
} 
curl_close($zipfile); 

if (file_exists($fileToWrite)){ 
    $zip = new ZipArchive; 
    $res = $zip->open($fileToWrite); 
    if ($res === TRUE) 
    { 
     $zip->extractTo($themepath); 
     $zip->close(); 
     echo 'Theme file has been extracted.'; 
    } 
    else 
    { 
     echo 'There was a problem opening the theme zip file: '.$res; 
    } 
} 
else{ 
    echo("There was an error downloading, writing or accessing the theme file."); 
} 

ответ

-1

Это следует сделать это:

<?php 
set_time_limit(0); 

$industry = "industryid"; //replace this 
$url = "https://ourwebsite/downloadzip.php?industryid=$industry"; 
$tmppath = "/tmp/tmpfile.zip"; 
$themdir = "/your/path/wp-content/themes/"; 
$fp = fopen ($tmppath, 'w+');//This is the file where we save the zip file 

$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_TIMEOUT, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_FILE, $fp); // write curl response to file 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_exec($ch); // get curl response 
curl_close($ch); 
fclose($fp); 


if (file_exists($tmppath)){ 
    $zip = new ZipArchive; 
    $res = $zip->open($tmppath); 
    if ($res === TRUE) 
    { 
     $zip->extractTo($themdir); 
     $zip->close(); 
     echo 'Theme file has been extracted.'; 
    } 
    else 
    { 
     echo 'There was a problem opening the theme zip file: '.$res; 
    } 
} 
else{ 
    echo("There was an error downloading, writing or accessing the theme file."); 
} 
?> 
+0

Спасибо. Я изменил свой код, чтобы более точно соответствовать вашим требованиям, но я не уверен, какова была проблема, вызывающая эту проблему. Можете ли вы ответить на это? Еще раз спасибо! –

+0

Возможно, это временное место, где вы сохранили права доступа к файлам или файлам. –

+0

Вы прокомментировали код, но, по сути, это просто скомпилированный код без объяснения того, что было не так, или как вы его исправили. – kontur