Bug #54128 [Opn->Asn]: ZIP_ER_OPEN when ZipArchive::open() on temp file

From: Date: Tue, 01 Mar 2011 14:55:09 +0000
Subject: Bug #54128 [Opn->Asn]: ZIP_ER_OPEN when ZipArchive::open() on temp file
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-159128@lists.php.net to get a copy of this message
Edit report at http://bugs.php.net/bug.php?id=54128&edit=1

 ID:                 54128
 Updated by:         johannes@php.net
 Reported by:        vavra at 602 dot cz
 Summary:            ZIP_ER_OPEN when ZipArchive::open() on temp file
-Status:             Open
+Status:             Assigned
 Type:               Bug
 Package:            Zip Related
 Operating System:   Windows 2003
 PHP Version:        5.2.17
-Assigned To:        
+Assigned To:        pajoye
 Block user comment: N
 Private report:     N

 New Comment:

I assume this is expected bahvior. At least on UNIX/Linux systems stat
is defined as

     The stat()  function  obtains  information  about  the  file
     pointed  to  by  path. Read, write, or execute permission of
     the named file is not required, but all  directories  listed
     in the path name leading to the file must be searchable.

I assume it is similar on Windows.

If the zip extension is accessing the temp dir this should probably be
documented.

Assigning to Pierre who knows zip and windows better :-)


Previous Comments:
------------------------------------------------------------------------
[2011-03-01 15:28:53] vavra at 602 dot cz

Description:
------------
On Windows 2003, IIS we use php as CGI. The php process runs as a
IUSR_XXXX user. When we want to unzip a file, we get error 11
(ZIP_ER_OPEN).

I tracked this by Process Monitor and I saw that ZipArchive::open()
tries to list a directory. We use temp directory. On Windows 2003 it is
C:\Windows\Temp.
After listing this directory ZipArchive::open() returns 11. And doesn't
continue at work.

When I add right "List Folder" for user IUSR_XXXX the open() call
succeeds.
I think it should be a kind of bug of c-runtime. I searched for
ZIP_ER_OPEN in php source and this is returned nearly after calls of
fopen() and stat(). It's odd that fopen() and stat() makes directory
listing....



Test script:
---------------
//without result testing:

$zipfile = tempnam(sys_get_temp_dir(),'zip');
file_put_contents($zipfile, $a_zip_file_content);
$zip = new ZipArchive();

$a_zip_file_content_reread = file_get_contents($zipfile,
$a_zip_file_conent);
//$a_zip_file_conent_reread has bean successfully read and has the same
content as $a_zip_file_content


$res=$zip->open($zipfile);
if ($res!==true)
 echo "Failed open a file: ".$res;




------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=54128&edit=1


Thread (16 messages)

« previous php.bugs (#159128) next »