It seems that the base64 encoded file described above is a bit wrong (ZipArchive refused to open it), but the following works:
// make the archive first file_put_contents($fileName, base64_decode("UEsDBAoAAAAAAOmRAT1vYassFAAAABQAAAAIAAAAbWltZXR5cGVhcHBsaWNhdGlvbi9lcHViK3ppcFBLAQIUAAoAAAAAAOmRAT1vYassFAAAABQAAAAIAAAAAAAAAAAAIAAAAAAAAABtaW1ldHlwZVBLBQYAAAAAAQABADYAAAA6AAAAAAA=")); // open archive if (($err = $zipfile->open($fileName)) !== TRUE) { trigger_error("Could not open archive: " . $fileName, E_USER_ERROR); } $zipfile->add(...) UEsDBAoAAAAAAOmRAT1vYassFAAAABQAAAAIAAAAbWltZXR5cGVhcHBsaWNhdGlvbi9lcHViK3ppcFBLAQIUAAoAAAAAAOmRAT1vYassFAAAABQAAAAIAAAAAAAAAAAAIAAAAAAAAABtaW1ldHlwZVBLBQYAAAAAAQABADYAAAA6AAAAAAA =")); // make the archive first file_put_contents($fileName, base64_decode("UEsDBAoAAAAAAOmRAT1vYassFAAAABQAAAAIAAAAbWltZXR5cGVhcHBsaWNhdGlvbi9lcHViK3ppcFBLAQIUAAoAAAAAAOmRAT1vYassFAAAABQAAAAIAAAAAAAAAAAAIAAAAAAAAABtaW1ldHlwZVBLBQYAAAAAAQABADYAAAA6AAAAAAA=")); // open archive if (($err = $zipfile->open($fileName)) !== TRUE) { trigger_error("Could not open archive: " . $fileName, E_USER_ERROR); } $zipfile->add(...)
I tested this with my own epub generation code and it worked fine. Epubcheck 1.05 checks it. By the way, if you use the "OPL EPUB library", beware that it is pretty buggy. Iβll probably be posting a fix soon so that this solution is done, but be careful before that.
source share