2

无法在 PHP 中创建 zip 存档,总是返回ZIPARCHIVE::ER_MULTIDISK

$fileName=$_SERVER['DOCUMENT_ROOT'].'/temp/temp.zip';
$zip = new ZipArchive();
$err=$zip->open($fileName,ZipArchive::CREATE);
$zipFileFunctionsErrors = array(0=>'OK',
        ZIPARCHIVE::ER_MULTIDISK => 'Multi-disk zip archives not supported.',
        ...,
        ...
);
echo $zipFileFunctionsErrors[$err];
$zip->addFromString('empty.txt', '');
$zip->close();

输出

Multi-disk zip archives not supported

未创建 zip 文件

在本地机器代码上效果很好

4

2 回答 2

3

我认为您的问题必须与 php 版本有关,听起来是这样的:(来自 php.net 评论):

如果 zip_open 失败,一些较旧的 PHP 版本过去会返回 false,而较新的版本会返回错误数(作为整数),所以不要这样:

$zip = zip_open($zip_file);
if ($zip) {
  // consider zip file opened successfully
}

用这个:

$zip = zip_open($zip_file);
if (is_resource($zip)) {
  // consider zip file opened successfully
}

听起来您正在从数组中获取第一个非数字索引,可能是“1”为“真”,这就是它在错误数组上显示元素“1”的原因

于 2013-03-13T09:28:36.593 回答
0

首先,检查您是否可以在服务器端使用 php 创建文件。可能存在身份问题。php 可以在 ie 上运行:apache id 并且你的 id 是 yourFtpId..

然后检查服务器上的php是否支持zip库,phpinfo可以显示。

然后检查您的服务器配置是否允许来自 php.ini 的 zip 命令。

当这些诊断结束时,如果您发现这些问题,您应该联系服务器管理员来解决它们。

于 2013-03-13T09:26:41.393 回答