ZipArchive :: open() requires a filename. $page is not the destination filename.
Im unsure where your target (source) file will end up on your destination server. I have a feeling $page might actually be the entire zip file stored in a variable, which is a bad thing when it comes to very large zip files.
I found a great tutorial for you:
http://www.tuxradar.com/practicalphp/15/10/2
The following code transfers a file from a URL to a local file:
$curl = curl_init();
$fp = fopen("somefile.txt", "w");
curl_setopt ($curl, CURLOPT_URL, "http://www.php.net");
curl_setopt($curl, CURLOPT_FILE, $fp);
curl_exec ($curl);
curl_close ($curl);
You then run your ZipArchive code on the destination file. ie: "somefile.txt"
Hope that helps. I would look into writing two functions:
function MyCopyFile($dstfilename, $srcfilename) {}
and
function MyUnzipToFolder($dstpath, $srcfilename) {}
Then, its clearer what your code is doing:
$src = "http://www.mysite.com/file.zip";
$dst = "file.zip";
$path = "temp/";
MyCopyFile($dst, $src);
MyUnzipToFolder($path, $dst);