2015-09-25 17 views
7

LZMA ile sıkıştırılmış bir SWF dosyası yüklüyordum ve bu sayede sunucumda PHP ile programlı olarak sıkıştırmak ve okumak istiyorum. Birisi beni bir PHP LZMA SDK'ya yönlendirebilir mi? Ben bunun için googled ettik, ama hiçbir şey bulamadık bir kırık bağlantı (7z extension for php?)PHP ile LZMA'nın sıkıştırılması

başvuruları var LZMA sıkıştırılmış SWF başlıkları okumak için yöneten çalışan bir python modülü var ama bu pyNZMA adlı bir modül gerektirir Sunucumun üzerine kurmak istemiyorum ve yerel olarak çalışmak için elde etmek eşek üzerinde büyük bir acıydı, bu yüzden eğer varsa bir PHP çözümünü tercih ederim.

+1

PHP için bir LZMA sınıfı/kütüphane/uzantısı yoksa, her zaman '7z' komut satırını arayabilirsiniz. –

+0

Komut satırı üzerinden bir ~ 8MB dizgisini tam olarak nasıl çözebilirim? – hedgehog90

+0

Bir geçici dosya olarak kaydedebilir veya '7z' STDIN'den veri kabul edebilir. –

cevap

2

7za ve 7zr ikili dosyaları için bir sarıcı olan PHP-SevenZipArchive adlı bir kitaplık var. Basit bir test senaryosu linux benim için çalışan:

paketini (yum install p7zip veya benzeri)

wget https://github.com/cmanley/PHP-SevenZipArchive/archive/master.zip 
unzip master.zip 
PHP SevenZipArchive linux kabuğunda testi sıkıştırılmış dosya

echo "Compressed data" | lzma -z > compressed.string 

indirme oluşturmak ve halletmek p7zip yüklemek

Sıkıştırılmış çıktı dizini oluştur

Benim daha önceki cevabı onun kalitesiz için moderatörler tarafından silindi: 210
mkdir out 

cat out/compressed 

Sıkıştırılmış veriler

NOT sıkıştırılmış dosyayı yaratacak

<?php 
require "./PHP-SevenZipArchive-master/SevenZipArchive.php"; 
$archive = new SevenZipArchive('compressed.string', array('binary'=>'/usr/bin/7za')); 
$archive->extractTo('out'); 
?> 

php -f ./index.php testi php dosyası oluşturmak/Zaten bunun için olumlu bir itibar var rağmen. Bu yüzden tamamen ayrıntılı bir şekilde yeniden yazdım. Umarım bu daha da yardımcı olur.