dr897777 2019-05-14 21:55
浏览 94

使用PharData或ZipArchive创建zip文件的问题

Following code has been creating zip files from PDF files for years in 4 parallel installations on same hardware.

Since a week it does not work anymore for a single system, no code changes.

The download via browser delivers a broken archive, that turns out to be a single, healthy pdf file when you change the file endinge from ".zip" to ".pdf" manually.

It seems like the file is sent before zip creation is ready, since i can download a working copy of the archive via ftp from the creation folder on the servers disc.

I tried to add a sleep(5) before return, commented out the use of PharData but nothing works. Still same problem. Any ideas?

<?php

//use phar class to zip, if existent
if ( class_exists( 'PharData' ) ) {

    $a = new PharData( $path );

    foreach ( $creditmemo_files as $creditmemo_file ) {
        if ( is_string( $creditmemo_file ) ) {
            $a->addFile( $creditmemo_file, basename( $creditmemo_file ) );
        }

    }

}
//otherwise use the usual zip archive class
if ( class_exists( 'ZipArchive' ) ) {

    create_zip( $creditmemo_files, $path );

}


if ( file_exists( $path ) === true ) {

    // http headers for zip downloads
    header( "Pragma: public" );
    header( "Expires: 0" );
    header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
    header( "Cache-Control: public" );
    header( "Content-Description: File Transfer" );
    header( "Content-Type: application/zip" );
    header( "Content-Disposition: attachment; filename=\"" . $filename . "\"" );
    header( "Content-Transfer-Encoding: binary" );
    header( "Content-Length: " . filesize( $path ) );
    $bytes_read = readfile( $path );
    ob_end_flush();

}
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
    • ¥15 求daily translation(DT)偏差订正方法的代码
    • ¥15 js调用html页面需要隐藏某个按钮
    • ¥15 ads仿真结果在圆图上是怎么读数的
    • ¥20 Cotex M3的调试和程序执行方式是什么样的?
    • ¥20 java项目连接sqlserver时报ssl相关错误
    • ¥15 一道python难题3
    • ¥15 牛顿斯科特系数表表示
    • ¥15 arduino 步进电机
    • ¥20 程序进入HardFault_Handler