Bug #71064 [Asn->Opn]: open($string, ZipArchive::OVERWRITE) does not create non-existing archives

From: Date: Tue, 24 Oct 2017 07:38:57 +0000
Subject: Bug #71064 [Asn->Opn]: open($string, ZipArchive::OVERWRITE) does not create non-existing archives
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-212133@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=71064&edit=1 ID: 71064 Updated by: kalle@php.net Reported by: php at rachuth dot de Summary: open($string, ZipArchive::OVERWRITE) does not create non-existing archives -Status: Assigned +Status: Open Type: Bug Package: Zip Related Operating System: * PHP Version: 5.6.16 -Assigned To: pajoye +Assigned To: Block user comment: N Private report: N Previous Comments: ------------------------------------------------------------------------ [2016-09-05 17:13:55] cmb@php.net Actually, the bundled libzip had been patched in the past due to bug #47667, and this later has be re-done again[1]. This patch causes different behavior with the bundled and a system libzip, so, in my opinion, it is good that we don't patch libzip anymore. I guess that this difference is the cause of the confusion regarding several user notes[2]. Considering that the behavioral change is already around for nearly 2 years (and always has been for system libzip), it might be best to stick with the current behavior, and update the manual appropriately. [1] <https://github.com/php/php-src/commit/b8cdc731> [2] <http://php.net/manual/en/ziparchive.open.php> ------------------------------------------------------------------------ [2015-12-17 05:44:08] pajoye@php.net Thanks for the report. Sorry to have missed this BC. ------------------------------------------------------------------------ [2015-12-16 19:34:23] jkeller at berkeley dot edu workaround is to use ZipArchive::CREATE | ZipArchive::OVERWRITE instead of ZipArchive::OVERWRITE ------------------------------------------------------------------------ [2015-12-08 14:56:15] php at rachuth dot de Description: ------------ There is an issue with the ZipArchive class' open() method. In previous versions of PHP when the only flag passed to the method was the ZipArchive::OVERWRITE, the method also created non-existing archives. Since PHP 5.6 the OVERWRITE flag alone cannot create new archives which breaks compatibility. Test script: --------------- // Open new archive in cwd based on timestamp $zip = new ZipArchive(); $open = $zip->open(time() . '.zip', ZipArchive::OVERWRITE); echo $open; Expected result: ---------------- Expected behavior: The new archive is opened as in the previous version. Actual result: -------------- In PHP 5.5 an empty archive is opened. In PHP 5.6 ZipArchive::ER_OPEN error code is returned (cannot open zip file). ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=71064&edit=1

« previous php.bugs (#212133) next »