【发布时间】: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