【问题标题】:PHP CURL corrupting GZIP file during server-to-server transferPHP CURL 在服务器到服务器传输期间损坏 GZIP 文件
【发布时间】:2011-07-19 15:22:06
【问题描述】:

我管理的一个开源应用程序 (phpMySQLAutoBackup) 使用 PHP gzencode 来压缩导出的 SQL 数据。它可以选择通过 PHP CURL 将压缩文件传输到远程服务器,但是 gzencoded 文件的远程副本已损坏。

扩展本地保存的 gz 文件没有损坏。但是,在检查远程副本时,它在传输后/传输过程中已损坏。尝试过 PHP CURL 和 PHP ftp_fput 都损坏了文件,但仅在数据被编码时!省略 PHP gzencode(因此传输纯文本)并且数据传输没有错误。

那么在 gzencoded 数据从服务器到服务器的传输过程中如何保存数据?

顺便说一句:也已经在 PHP CURL 和 PHP ftp_fput 中尝试过 BINARY 模式。

【问题讨论】:

    标签: php curl gzip


    【解决方案1】:

    究竟什么是“损坏”? .gz 根本不会解压缩?中间几个字节不一样?文件更长?更短?

    您是否在文本/十六进制编辑器中查看了生成的损坏文件?也许数据中嵌入了一些 PHP 警告。

    【讨论】:

    • 嗨,马克,感谢您的回复。它确实压缩了 - 原始数据的大小约为:900kb,当 gzencoded 为 120kb 时。损坏 - 抱歉,在这种情况下,“损坏”是指打开 gz 文件并尝试提取这些错误消息:“错误:遇到意外的文件结尾。”然后是“错误:要膨胀的压缩数据无效。”并且无法提取任何数据。
    • 发现问题。问题不是 PHP。这是我的FTP客户端!每次我下载 gz 文件的副本时,它都会以 ASCII 模式而不是 BINARY 模式下载它(我通常将所有站点的默认设置为二进制,但我一定错过了这个,它恰好是所有的gz文件都是)。哦,好吧,浪费了一天!因此,如果您在下载 zip 文件时遇到此错误:“错误:遇到意外的文件结尾。”和“错误:要膨胀的压缩数据无效。”检查您的 FTP 客户端设置,以便传输模式为:BINARY。
    猜你喜欢
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    相关资源
    最近更新 更多