Re: Re: ZipArchive question

From: Date: Thu, 09 Apr 2015 01:39:51 +0000
Subject: Re: Re: ZipArchive question
References: 1 2 3 4  Groups: php.general 
Request: Send a blank email to php-general+get-324791@lists.php.net to get a copy of this message
On Apr 8, 2015, at 5:28 PM, Christoph Becker wrote:
Jeffry Killen wrote:
On Apr 8, 2015, at 3:04 PM, Christoph Becker wrote:
Jeffry Killen wrote:
My question is: Where is the test.zip archive file located? (/tmp, maybe?) I would expect it to be in the same dir as the processing script, but I don't see anything in the dir by the name of test.zip.
I might be completely wrong, but I believe that the actual test.zip is only created if everything worked out fine (including that the zip won't be empty). So unless you're getting "good to go: ...", there won't be a zip file. If everything works well, the file is supposed to be created in the current working directory, i.e. the usually the directory of the requested script.
Thank you for the inro: As it turns out, the cwd of the script did not have adequate write permissions set. Once I corrected that problem I got the test.zip file to show up. But I am wondering why I did not get the error code: ZIPARCHIVE::ER_OPEN
Can't open file...    if write permissions where wrong?
I agree that there should be some error indication (not sure if ER_OPEN would be appropriate when creating a file, though) instead of returning TRUE. Did you get any warning/notice in the error log (presuming that you have error_reporting set to an appropriate value for development)? Also, maybe the error is reported only when ->close() is called. It might be worthwhile to check its return value. Unfortunately, I can't easily try it myself because I'm on Windows 7 Home, where I do not easily have access to the ACL (it was possible with XP, but I had to reboot into safe mode; don't know if that's possible with Win7). Maybe you want to spend some further time on the issue and file a respective bug report[1] if appropriate.
I didn't get an error message saying that write permissions denied the operation. I didn't have @ in front of the call to open and have error reporting turned on. Anyhow this is a process of getting to know what to expect and coding for it. I would add code to test the write permissions for the dir: like if(is_writable('./')) and proceed based on test result.
I ran across user comments on the php.net site for ZipArchive claiming that addEmptyDir was remove or disabled, and in fact I couldn't get it to work.
I just tried that with PHP 5.4.19, and it worked fine. I can imagine, though, that empty directories might not be displayed by all zip readers, and actually I'm not sure if zip archives do store directories at all; quite likely only files are stored. Anyhow, the issue seems to demand further investigation. It seems there are no respective reports in the PHP bug tracker.[2]
Actually the only reason I can see for adding an empty directory to a zip file is to add something to it at a later date. But when I used it I did not get any errors. The script just seemed to exit WITHOUT returning ANY async response. I was probably doing something wrong that didn't cause an error, or my code wasn't managing to pass error information back.
I also discovered that calling download code from an async get request wouldn't work. I just got the contents of the zip file returned to the origin page (as I coded it in the original message).
That's to be expected. If you use XMLHttpRequest (or a wrapper) to request a download, the response can be received, but it can't be stored in the file system of the client due to security considerations.
Thanks for time and attention:
You're welcome. [1] <https://bugs.php.net/> [2] <https://bugs.php.net/search.php?cmd=display&search_for=addemptydir --Christoph M. Becker


« previous php.general (#324791) next »