Php 创建zip存档会使多个文件附加不可预测的字符串

Php 创建zip存档会使多个文件附加不可预测的字符串,php,zip,archive,Php,Zip,Archive,我正在尝试制作一个PDf下载程序,用户可以在其中选择几个文件,然后下载他们所选内容的zip。我让它在我的个人服务器上工作,但在生产服务器上我得到一个奇怪的错误。zip文件已生成,但它附加了一个数字字符串,例如 zipfile.zip.a08752,zipfile.zip.b08752 更奇怪的是,如果我从末尾删除字符串并下载文件,它会正确扩展 我在本主题中了解到,文件多次尝试关闭、失败和重试都有问题 下面是我的zip函数的代码,不过我怀疑这与 function buildZip($params)

我正在尝试制作一个PDf下载程序,用户可以在其中选择几个文件,然后下载他们所选内容的zip。我让它在我的个人服务器上工作,但在生产服务器上我得到一个奇怪的错误。zip文件已生成,但它附加了一个数字字符串,例如

zipfile.zip.a08752,zipfile.zip.b08752

更奇怪的是,如果我从末尾删除字符串并下载文件,它会正确扩展

我在本主题中了解到,文件多次尝试关闭、失败和重试都有问题

下面是我的zip函数的代码,不过我怀疑这与 function buildZip($params){ /* Generate unique Id */
$downloadid = uniqid();

/* Pull in the order.xml */
if(!empty($_REQUEST['downloadlink'])){  
    if( $params->usexml == true){
        $xml = @simplexml_load_file($params->pdfolder.'/order.xml');
        $order =  $xml->children();
    }else{
        $order = $params->files;        
    }
    /* Create the new Zip */
    $zip = new ZipArchive();   
    if ($zip->open($params->zipname.'version'.$downloadid.'.zip', ZIPARCHIVE::CREATE) !== TRUE) {
        die ("Could not open archive");
    }

    /* Generate the download link to output further down the page */
    global $downloadLink;
    $downloadLink = $params->zipname.'version'.$downloadid.'.zip';

    /* Make selected variable available to build the listSelection function */
    global $selected;
    $selected = array();
    $i = 0;


    foreach($order as $el){

        if (isset($_POST[$i]) == true){ 
            //generate list of selected PDF's

            array_push($selected,  $el->name);

            //grab selected pdf's and zip them.
            echo $zip->addFile($params->pdfolder.'/'.$el->link);
            $zip->addFile($params->pdfolder.'/'.$el->link) or die ("ERROR: Could not add file: pdf'.$i.'.html");
        }
        $i++;
        }   

        $zip->close();
    }
}
<code>

为清楚起见,我正在拉入一个名为order.XML的XML列表,以拉入可能的文件数组。

在压缩完成后尝试修剪奇怪的数字字符串。

我刚刚遇到了同样的问题。发生这种情况是因为无法创建zip文件。它失败了,因为你的文件太大了。为了解决这个问题,我必须创建多个较小的zip文件。我希望这会有所帮助。

忘了提及,但我们使用的是PHP5.2.14,ZIP类存在,尽管在phpinfo下,'-enable-ZIP'在我的服务器上的工作版本的configure命令下列出,但在生产服务器上没有。我不知道这是否有区别。