Unexpected Error in ZipArchive::close
Ouverte
@remicollet y travaille déjà.
Depuis le 18/1/2024.
Bug
Extension: zip
Status: Needs Triage
- Langage dominant
- C
- Étoiles
- 40.4k
- Forks
- 8.1k
- Merge moyen
- 2 j 13 h
- PR mergées (30 j)
- 96
Description
Description
There seems to have been a change between Php7 and Php8 whereby ZipArchive::close can issue a fatal error rather than a warning. This is a big change in behavior. Was it intended? Nothing in the documentation for the method suggests an error, let alone a fatal error, can be issued. The second close below is obviously wrong and should return false, but why should it be treated as fatal?
The following code:
<?php
$zip = new ZipArchive();
$res = $zip->open('zzip.zip', ZipArchive::OVERWRITE | ZipArchive::CREATE);
if ($res !== true) {
echo "open failed result=$res\n";
exit(1);
}
$zip->addFromString('test.txt', 'file content goes here');
$zip->close();
$x = @$zip->close();
var_dump($x);
Resulted in this output:
Fatal error: Uncaught ValueError: Invalid or uninitialized Zip object in C:\git\zzip.php on line 10
ValueError: Invalid or uninitialized Zip object in C:\git\zzip.php on line 10
Call Stack:
0.0002 394520 1. {main}() C:\git\zzip.php:0
0.0085 395152 2. ZipArchive->close() C:\git\zzip.php:10
But I expected this output instead (as with Php7):
C:\git\zzip.php:11:
bool(false)
PHP Version
All Php8
Operating System
Windows, but probably all
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Évaluation
Cette issue n'a pas encore été évaluée.