I’m making a http request that will return all my files zipped. However, after attempting to open the zip file, it returns to be an integer.
$zip = zip_open("http://this/returns/zip/file");
while($zipFile = zip_read($zip))
{
echo "Filename: " . zip_entry_name($zipFile) . "<br>";
echo "Compressed Size: " . zip_entry_compresedsize($zipFile) . "<br>";
echo "Real Size: " . zip_entry_filesize($zilFile) . "<br><br>";
}
What is wrong here and how can it be fixed? Thanks in advance.
EDIT: The code number is 11.
As @crontab mentioned in a comment,
zip_openreturns an error code on failure, as explained in the documentation:You can determine what the error code you’re seeing refers to by comparing it with the predefined error constants on this manual page, specifically the constants that begin with
ER_.There is a comment on that page which shows what the literal value of each constant is, but I don’t know how accurate it is.
I just saw your edit that the error code you’re seeing is the integer
11. That error code isZIPARCHIVE::ER_OPEN, which means that PHP was unable to open the file.You should check to make sure that the filename you’re using is accurate, and that the file is readable by PHP. You can use the
is_readablefunction to check this before you try to open any file.Remember that just because you can open the file on the system doesn’t mean that PHP can. File permissions differ between users, and PHP is very likely not running under your user account.
Alright, I just realized that you’re trying to open this file via a URL. I’m not sure whether or not
zip_opencan open remote files, but a quick test on my machine with a remote file I’m sure exists seems to indicate that it can’t.is_readableis similarly unable to process remote files.In this case, the best thing for you to do is to download the remote file, then call
zip_openon the newly created local file: