Bug #65288 [Opn->Wfx]: ZipArchive::getStatusString returns wrong error message
Edit report at https://bugs.php.net/bug.php?id=65288&edit=1
ID: 65288
Updated by: ab@php.net
Reported by: crayonviolent at phpfreaks dot com
Summary: ZipArchive::getStatusString returns wrong error
message
-Status: Open
+Status: Wont fix
Type: Bug
Package: Zip Related
Operating System: Irrelevant
PHP Version: Irrelevant
Block user comment: N
Private report: N
Previous Comments:
------------------------------------------------------------------------
[2013-07-22 07:34:48] ab@php.net
Ok, now i see what you mean. Opening a nonexistent archive item. Lookiing through
the history i can see that this is an intentional change to libzip on PHP side,
look here http://svn.php.net/viewvc/pecl/zip/trunk/lib/zip_name_locate.c?
r1=260064&r2=260074 . Not sure it's gonna change. But you can use ->nameLocate()
as a workaround for now.
------------------------------------------------------------------------
[2013-07-19 22:41:42] crayonviolent at phpfreaks dot com
Read the example code closer. The zip is valid and will open. It is the non
existant file IN the zip that getStream isn't returning a proper error on
------------------------------------------------------------------------
[2013-07-19 07:20:12] ab@php.net
In your example, it wouldn't even reach to getStream(). If there's no file, it'll
not go through after open(). Please give an example reproducing the exact behavior
you describe.
------------------------------------------------------------------------
[2013-07-18 14:15:05] crayonviolent at phpfreaks dot com
Description:
------------
From the code below, if $file_name is a valid file found within $zip_file, the
contents are echo'd just fine. However, if the $file_name is not found, $fp
returns false and getStatusString() is echo'd. The problem is that it is echoing
"No error". Shouldn't it be returning "No such file" (ER_NOENT) ?
Maybe this is actually a bug with ZipArchive::getStream or a combo of both?
Test script:
---------------
/**** begin code ****/
$zip_file='someZip.zip';
$file_name='someFile.txt';
$z = new ZipArchive();
if ($z->open($zip_file) !== true) {
echo "File not found.";
return false;
}
$fp = $z->getStream($file_name);
if (!$fp) {
echo $z->getStatusString();
} else {
fpassthru($fp);
}
/***** end code ******/
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=65288&edit=1
Thread (6 messages)