Could not open php://output for writing.问题解决

这是一个自己在项目中遇到的问题。

由于一直以来,公司都是用的Linux服务器,这次为客户做项目,换成了winserver。

项目中有一项功能是Excel导出,采用PHPEXCEL类库实现。由于是个小项目,直接用PhpStudy搭建了服务器环境,代理选的是Apache,注册系统服务,自启动,以Network Service身份登录。

测试的时候导出功能报错,提示Could not open php://output for writing。目测是由于Network Service账号的权限不足导致的。但翻遍了网上的资料也没找到解决办法。

Windows系统下的临时目录是C:\Windows\Temp没问题,给该目录加上Network Service的权限也无效。

后来有发现导入的时候同样报错了,无法读取excel文件,所以跟踪导入的代码,发现上传文件的临时目录竟然是C:\Windows。继续跟踪PHPEXCEL的代码,找到了sys_get_temp_dir()方法。查看phpinfo,发现sys_temp_dir变量为空,于是手工指定sys_temp_dir = "C:\Windows\Temp" upload_tmp_dir = C:\Windows\Temp。问题解决。

posted @ 2018-01-26 16:02  Bin_x  阅读(594)  评论(0编辑  收藏  举报