我有一个服务器,它运行一个我们用来创建 .docx 的小应用程序。
它在旧服务器上运行良好,但我不得不将它移到另一台服务器上,现在它有一个很大的问题:当我运行我的 php 脚本时 - 基于 PHPWord - 输出文件已损坏且无法使用(MS Word 报告“文件 xyz.docx 无法打开,因为内容存在问题)。
将文件扩展名从 .docx 更改为 .zip(只是为了查看其内容)也无济于事。
这个问题“有趣”的一面是,在同一台服务器上,使用相同版本的 PHP,使用 nginx 1.2.3 它消失了,.docx 文件很完美(好吧,如果不关心内容......但这是另一个问题......)。
我可以打开 nginx,但我有一个不同的问题:我无法按预期读取 Latin1 特殊字符。
google了半天的代码,发现问题出在PHPWord的Template.php库中的下面一行,第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
- 我看不到任何错误信息
任何想法?