Unexpected Error in ZipArchive::close
Offen
@remicollet arbeitet bereits daran.
Seit 18.1.2024.
Bug
Extension: zip
Status: Needs Triage
- Vorherrschende Sprache
- C
- Sterne
- 40.4k
- Forks
- 8.1k
- Ø Merge
- 2 T. 13 Std.
- Gemergte PRs (30 T.)
- 96
Beschreibung
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
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Bewertung
Dieses Issue wurde noch nicht bewertet.