【问题标题】:ZipArchive addFromString doesn't work properly on WindowsZipArchive addFromString 在 Windows 上无法正常工作
【发布时间】:2015-01-30 19:40:39
【问题描述】:

我有一个服务器,它运行一个我们用来创建 .docx 的小应用程序。

它在旧服务器上运行良好,但我不得不将它移到另一台服务器上,现在它有一个很大的问题:当我运行我的 php 脚本时 - 基于 PHPWord - 输出文件已损坏且无法使用(MS Word报告“文件 xyz.docx 无法打开,因为内容有问题)。

还将文件扩展名从 .docx 更改为 .zip(只是为了查看其内容)也无济于事。

这个问题“有趣”的一面是,在同一台服务器上,使用相同版本的 PHP,使用 nginx 1.2.3 它消失了,.docx 文件很完美(好吧,如果不关心内容...但这是另一个问题...)。

我可以打开 nginx,但我有一个不同的问题:我无法按预期读取 Latin1 特殊字符。

google了半天代码,发现问题出在PHPWord的Template.php库中的下面一行代码,lin 105: $this->_objZip->addFromString('word/document.xml', $this->_documentXML);

它显然可以正常工作(在 nginx 上确实可以正常工作),但它会生成一个假的 .docx,无法打开。

我尝试了不同版本的 apache 服务器,但没有成功,所以我非常感谢任何帮助。

总结:

  • 我在 Windows Server 2003 主机和 php 5.2.8 上测试了我的脚本(使用 PHPWord)
  • 在 nginx 上运行良好
  • 它使用 apache 生成一个错误的 .docx 文件(ZipArchive addFromString 不起作用)
  • 我使用多个 Apache 版本对其进行了测试,从 2.0.64 到 2.2.25
  • 我看不到任何错误消息

有什么想法吗?

【问题讨论】:

    标签: php apache nginx ziparchive phpword


    【解决方案1】:

    您可以使用 PclZip 代替 ZipArchive。

    The sample code

    \PhpOffice\PhpWord\Settings::setZipClass(\PhpOffice\PhpWord\Settings::PCLZIP);
    

    【讨论】:

      猜你喜欢
      • 2020-08-04
      • 2016-04-11
      • 1970-01-01
      • 2019-09-01
      • 2021-01-14
      • 2021-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多