This has been a long standing bug, but i just recently sought out the cause.
The following snippets fails in currently packaged php:
$zip = new ZipArchive;
$zip->open("test.zip", ZipArchive::CREATE | ZipArchive::OVERWRITE);
With a warning:
Warning: ZipArchive::close(): Renaming temporary file failed: Illegal
seek in /tmp/zip.php on line 5
It appears that the problem lies in libzip. If the extension is built
without `--with-libzip=/usr`, the error doesn't emerge. When libzip is
not available, extension is built with a bundled zip implementation.
To test, navigating into `ext/zip` in php source.
Test with bundled library:
phpize && LDFLAGS='-lpcre' ./configure && make test
Test with libzip:
phpize && LDFLAGS='-lpcre' ./configure --with-libzip=/usr && make test