Bug->Doc #71064 [Opn->Ana]: open($string, ZipArchive::OVERWRITE) does not create non-existing archives
| From: | cmb@php.net | Date: | Tue, 08 May 2018 20:36:04 +0000 |
| Subject: | Bug->Doc #71064 [Opn->Ana]: open($string, ZipArchive::OVERWRITE) does not create non-existing archives | ||
| References: | 1 | Groups: | php.doc.bugs |
| Request: | Send a blank email to doc-bugs+get-15665@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: cmb@php.net
Reported by: php at rachuth dot de
Summary: open($string, ZipArchive::OVERWRITE) does not create
non-existing archives
-Status: Open
+Status: Analyzed
-Type: Bug
+Type: Documentation Problem
Package: Zip Related
Operating System: *
PHP Version: 5.6.16
-Assigned To:
+Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
Since system libzip is actually preferred in the meantime[1], we
won't customize the bundled libzip anymore. Thus, I'm switching
to doc issue.
[1] <https://github.com/php/php-src/commit/8857161bf2936bb807ac99c991509821bf7f1100#diff-18e07cc7a4680f60b944b30302e4bfa9>
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