Unexpected Error in ZipArchive::close
オープン
@remicollet がすでに取り組んでいます。
2024年1月18日 から。
Bug
Extension: zip
Status: Needs Triage
- 主要言語
- C
- スター
- 40.4k
- フォーク
- 8.1k
- 平均マージ
- 2日 13時間
- マージ済み PR(30日)
- 96
説明
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
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
評価
この issue はまだ評価されていません。