2011-01-10 51 views
1

我正在編寫一些使用php5的epub創建功能。目前我正在嘗試使用ZipArchive,但遇到了一些煩惱。首先,沒有功能來設置壓縮級別。其次,ZipArchive::addFile()似乎無聲無息地失敗,並創建一個腐敗的檔案,每當我使用它。我一直在使用file_get_contents() + ZipArchive::addFromString(),但寧願只使用記錄的功能來添加文件。ZipArchive以外的庫用於在PHP中創建pkzip存檔?

我不會發布代碼示例,除非有人真的想幫助我調試此問題,而是想知道是否有任何其他庫用於在PHP中創建zip(pkzip)歸檔,您會推薦。到目前爲止,我已經看到PclZip,其網站似乎沒有加載,但沒有其他的。我也考慮過使用exec() + zip(unix命令)。這段代碼只能運行在這個特定的Linux機器上,所以可移植性不是問題。

在此先感謝您的任何建議!

+0

取決於你在哪個機器上運行這個你可以使用Linux命令行zip。我更喜歡這個小工作。 – 2011-01-10 21:36:42

回答

1

PCLZip是非常不錯的選擇,如果您可以訪問該網站,zlib作爲其唯一依賴項。這可能是暫時的,聖誕節和新年之間肯定是可以訪問的。

這也是非常有效的,即使在ZipArchive

編輯

比較你說你已經受夠了ZipArchive的addFile()方法的問題。這是在Windows環境中還是在Linux服務器上?我知道Win32上的php_zip庫有一些bug出現,可以解決這個問題,儘管最新的版本看起來不錯,而且我在其他平臺(甚至是WIN64版本)上沒有遇到同樣的問題。

+0

我在linux dev服務器上遇到了問題。實際的addFile調用返回true,但添加了大小爲0的文件,導致歸檔無法讀取。在php.net上有一條評論(http://www.php.net/manual/en/function.ziparchive-addfile.php#84529),它表示在服務器上使用相對路徑到文件,否則會導致一個錯誤。我正在使用絕對路徑,所以我將這看作是最後的手段。 – nini 2011-01-10 22:28:12

1

我會使用exec()和Unix命令。一種本地到系統的方式來解決這個問題 - unix utils將永遠比他們的PEAR同行前進一兩步。