我一直在尝试使用谷歌应用引擎和PHP的ZipArchive来压缩一个文件,该文件位于一个可以存储的桶中,然后将该zip文件存储在存储桶中。我基本上一直在添加错误检查,并已进入只读文件系统消息。bucket和application在同一个项目中。不知道从这里到哪里。有什么想法吗?下面是我的测试代码和结果。
$zip = new ZipArchive();
$filename = "gs://my_bucket/new_zip_file.zip";
$toadd = 'gs://my_bucket/MakeaZip.txt';
if (file_exists($toadd)) {
echo "The file $toadd exists
";
} else {
echo "The file $toadd does not exist
";
}
if (is_writable('gs://my_bucket')) {
echo 'Folder is writable
';
} else {
echo 'Folder not writable
';
}
if ($zip->open($filename, ZipArchive::CREATE)!==TRUE) {
echo 'Can not open '.$filename.'
';
} else {
echo 'Can open '.$filename.'
';
}
$content = file_get_contents($toadd);
$zip->addFromString(pathinfo ( $toadd, PATHINFO_BASENAME), $content);
echo "numfiles: " . $zip->numFiles . '
';
echo "status:" . $zip->status . '
';
echo 'GetStatusString: '.$zip->getStatusString() . '
';
$ret = $zip->close();
echo 'Closed with: ' . ($ret ? "true" : "false") . '
';
echo 'GetStatusString: '.$zip->getStatusString() . '
';
上述代码的结果是:
文件gs://my_bucket/makeazip.txt存在
文件夹可写
可以打开gs://my_bucket/new_zip_file.zip
数字文件:1
状态:0
GetStatusString:无错误
关闭方式:假
GetStatusString:创建临时文件失败:只读文件系统