ZipArchive addFromString在Windows上无法正常工作

时间:2014-12-02 14:09:45

标签: php apache nginx ziparchive phpword

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

它在一台旧服务器上工作得很好但我不得不在另一台服务器上移动它现在它有一个很大的问题:当我运行我的PHP脚本 - 基于PHPWord时 - 输出文件被破坏而无法使用(MS Word报告“由于内容有问题,无法打开文件xyz.docx。”

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

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

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

在谷歌搜索并搜索了很长一段时间后,我发现问题出在以下行,包含在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
  • 我看不到任何错误消息

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用PclZip而不是ZipArchive。

The sample code

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