Ben bir uzak sunucuda bir zip dosyasının içeriğini kapmak ve sonra bir temp_zip_file.zip kaydetmek ve daha sonra bir dosyanın içeriğini ayıklamak için PclZip sınıfını kullanmak için CURL kullanıyorum.
Sorun bazı sunucularda, sunucu I pclzip çıkarılması için kullanabilirsiniz böylece benim komut CURL getiri üzerinden bir geçici zip dosyası oluşturmak için izin vermez olmasıdır.
Ben ne yapmak istiyorum geçici bir zip dosyasının oluşturulması atlamak ve sadece çıkarma pclzip sınıf orijinal CURL dize dönüşünü kullanmaktır.
Bazı sunucular hiçbir varsayılan php zip sınıf kullanılmasına izin çünkü PclZip kullanmak zorunda.
Aşağıda uzaktan dosya içeriği kapmak için kullanılan kıvrılma fonksiyonudur.
function copy_file($download_file)
{
//get file
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$download_file);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$file = curl_exec($ch);
curl_close($ch);
$fp = fopen('temp_zip_file.zip', 'w');
fwrite($fp, $file);
fclose($fp);
//exit;
}
Aşağıda benim pcl unzip fonksiyonu bir kopyasını $ download_file 'temp_zip_file.zip' olduğu gibidir:
function zip_extract($download_file, $store_path, $remove_path)
{
//echo 1; exit;
//echo $remove_path; exit;
$archive = new PclZip($download_file);
$list = $archive->extract(PCLZIP_OPT_REMOVE_PATH, $remove_path, PCLZIP_OPT_PATH, $store_path, PCLZIP_OPT_REPLACE_NEWER );
if ($list == 0)
{
//echo "death here"; exit;
die("Error : ".$archive->errorInfo(true));
}
else
{
//print_r($list); exit;
return 1;
}
}
Herhangi bir destek için teşekkür ederiz