2011-01-10 32 views
1

私はphp5を使っていくつかのepub作成機能を書いています。現在私はZipArchiveを使用しようとしていますが、それにはいくつかの煩わしさがあります。まず、圧縮レベルを設定する機能はありません。第二に、ZipArchive::addFile()は私がそれを使用するたびに黙って失敗し、破損したアーカイブを作成するようです。代わりにfile_get_contents() + ZipArchive::addFromString()を使用していますが、ファイルを追加するために文書化された関数を使用する方が好きです。PHPでpkzipアーカイブを作成するためのZipArchive以外のライブラリ?

誰かが本当にこの問題をデバッグする手助けをしない限り、私はコードサンプルを投稿しませんが、PHPでzip(pkzip)アーカイブを作成するための他のライブラリがあるかどうか疑問に思っています。これまでのところ、私はPclZipを見てきました。そのサイトは読み込み中ではないようですが、それほど多くはありません。私はまた、exec() + zip(unixコマンド)の使用を検討しました。このコードはこの1つの特定のLinuxボックスでのみ実行されるので、移植性は問題になりません。

ご協力いただきありがとうございます。

+0

これを実行しているマシンによっては、Linuxのコマンドラインzipを使用できます。私は小さい仕事のためにこれを好む。 –

答えて

1

PCLZipは、サイトへのアクセス権を得ることができれば、唯一の依存関係としてzlibを使用することで、かなり良い選択肢です。一時的なことかもしれませんが、クリスマスと新年の間に確かにアクセス可能でした。

それもZIPARCHIVE

あなたはZIPARCHIVEのADDFILE()メソッドの問題を持っていたと言うEDIT

と比較しても、かなり効率的です。これはWindows環境か、Linuxサーバーですか?私は、この問題を引き起こすWin32上のphp_zipライブラリのいくつかのバグのリリースがあることを知っていますが、最新のバージョンはOKと思われますが、他のプラットフォーム(WIN64バージョン)でも同じ問題は発生していません。

+0

私はLinuxデベロッパーサーバーでそれに問題があります。実際のaddFile呼び出しはtrueを返していますが、サイズ0のファイルが追加されているため、アーカイブが読めなくなります。 php.net(http://www.php.net/manual/en/function.ziparchive-addfile.php#84529)には、サーバー上のファイルへの相対パスを使用すると言われているコメントがあります。エラー。私は絶対的な道を使用しているので、私は最後の手段としてそれを見ています。 – nini

+0

あなたはこの質問に対する回答を見ましたか? http://stackoverflow.com/questions/4651276/php-no-error-when-creating-zip-but-it-doesnt-get-created –

+0

ああ、私はそれがaddFileの問題だと思っています。リンクありがとう。 addFileが実際に追加しようとしている間に適切なエラーを投げたとしても、あなたは何ができますか?しかし、アーカイブ内の1つのファイルが圧縮されている必要があり、ZipArchiveで設定できないため、私はまだ私のepubファイルに問題があります。このファイルが正しくアーカイブされていないと、epubが正常に開かれないので、ZipArchive以外のものを使用しなければならないことがわかります。 – nini

1

私はexec()とUnixコマンドを使います。問題を解決するためのネイティブからシステムへの方法です.UNIXのutilsは、常にPEARの対応するものから1つまたは2つ先になります。

関連する問題