PHPWord 操作word ZipArchive::locateName(): Invalid or uninitialized Zip object

一世执手 提交于 2020-02-07 02:15:30

PHPWord 操作 word文档报错ZipArchive::locateName(): Invalid or uninitialized Zip object总结

一、文件问题

我碰到的就是第一种情况了,docx文件有问题,office文件经过编辑后都会被加密了,于是我新建了一个文件,报错就消失了,但是如何对加密文件进行编辑,仍然无法解决……

二、MsDoc跟Word2007的区别

MsDoc读取的是.doc后缀,适用于2003年前的MicrosoftOffice版本的word文件,对于现在来说已经很老了,Word2007读取的是docx后缀,现在基本使用的是Word2007了。

适用于两种后缀文件的代码,如果是因为这个原因报错的话,问题是很好解决的。

if ('docx' == $file_ext) {
    $inputFileType = 'Word2007'; //Word2007及以上
} else {
    // $this->openOfficePreview($inputFileName);//调用openoffice处理吧
    $inputFileType = 'MsDoc'; //Word97-2003 但是会乱码 何解? TODO
}

附带下安装PHPWord安装教程(镜像比较坑,下半天……)

1.安装composer就不赘述了,自行百度

2.在composer.json文件中添加以下代码,版本可以自行更改,
composer show --all phpoffice/phpword可以查询所有phpword版本

{
    "require": {
       "phpoffice/phpword": "v0.17.0"
    }
}

添加后执行composer install,等待安装就好了

也可以直接执行要安装的版本,同理版本号可以自行修改

composer require  phpoffice/phpword v0.17.0

3.如果卡在界面完全不动,考虑修改镜像(修改当前项目的 composer.json 配置文件,若要全局配置在composer config后加 -g 即可)
打开命令行窗口(windows用户)或控制台(Linux、Mac 用户),进入你的项目的根目录(也就是 composer.json 文件所在目录),执行如下命令:

composer config repo.packagist composer https://packagist.phpcomposer.com

这是中国全量镜像,可以安装最好,不能安装就尝试下下面两个镜像

#阿里云的composer镜像源
composer config repo.packagist composer https://mirrors.aliyun.com/composer/
#腾讯云的composer镜像源
composer config repo.packagist composer https://mirrors.cloud.tencent.com/composer/

上面两个是我们中国这两大公司的源,不过也不一定有用。

这里其实还有可能出一点错误,就是apache或者nginx 需要开启ssl.mod.

希望对你有所帮助^^

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!