Edit report at https://bugs.php.net/bug.php?id=65288&edit=1

 ID:                 65288
 Updated by:         a...@php.net
 Reported by:        crayonviolent at phpfreaks dot com
 Summary:            ZipArchive::getStatusString returns wrong error
                     message
 Status:             Open
 Type:               Bug
 Package:            Zip Related
 Operating System:   Irrelevant
 PHP Version:        Irrelevant
 Block user comment: N
 Private report:     N

 New Comment:

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.


Previous Comments:
------------------------------------------------------------------------
[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] a...@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

Reply via email to