1 min read

phpword设置TEMP目录

刚把网站放到服务器上。用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当作临时目录