刚把网站放到服务器上。用PHPWORD生成DOCX的时候出现错误:
Warning: ZipArchive::getFromName() [ziparchive.getfromname]: Invalid or unitialized Zip object in D:\wwwroot\vendor\phpoffice\phpword\src\PhpWord\Shared\ZipArchive.php on line 198
Warning: ZipArchive::getFromName() [ziparchive.getfromname]: Invalid or unitialized Zip object in D:\wwwroot\vendor\phpoffice\phpword\src\PhpWord\Shared\ZipArchive.php on line 201
Warning: ZipArchive::close() [ziparchive.close]: Invalid or unitialized Zip object in D:\wwwroot\vendor\phpoffice\phpword\src\PhpWord\Shared\ZipArchive.php on line 160
Fatal error: Uncaught exception 'PhpOffice\PhpWord\Exception\Exception' with message 'Could not close zip file C:\WINDOWS\Temp\Php286.tmp.' in D:\wwwroot\vendor\phpoffice\phpword\src\PhpWord\Shared\ZipArchive.php:161 Stack trace: #0 D:\wwwroot\vendor\phpoffice\phpword\src\PhpWord\TemplateProcessor.php(331): PhpOffice\PhpWord\Shared\ZipArchive->close() #1 D:\wwwroot\vendor\phpoffice\phpword\src\PhpWord\TemplateProcessor.php(349): PhpOffice\PhpWord\TemplateProcessor->save() #2 D:\wwwroot\function.php(405): PhpOffice\PhpWord\TemplateProcessor->saveAs('docxs/tmp_docx/...') #3 D:\wwwroot\biaodan.php(19): arr_write_to_docx(Array, 'docxs/zhuxiao...') #4 {main} thrown in D:\wwwroot\vendor\phpoffice\phpword\src\PhpWord\Shared\ZipArchive.php on line 161
看上去像是TEMP权限问题。然后这台2003不知道什么原因。 改不了c:\windows\temp文件夹的权限。查了半天,发现PHPWORD可以设置TEMP目录,一行代码搞定,害我折腾了几个小时。囧
\PhpOffice\PhpWord\Autoloader::register(); //加在这个语句后面
\PhpOffice\PhpWord\Settings::setTempDir('temp'); //网站目录下的temp当作临时目录