这是一个自己在项目中遇到的问题。
由于一直以来,公司都是用的Linux服务器,这次为客户做项目,换成了winserver。
项目中有一项功能是Excel导出,采用PHPEXCEL类库实现。由于是个小项目,直接用PhpStudy搭建了服务器环境,代理选的是Apache,注册系统服务,自启动,以Network Service身份登录。
测试的时候导出功能报错,提示Could not open php://output for writing。目测是由于Network Service账号的权限不足导致的。但翻遍了网上的资料也没找到解决办法。
Windows系统下的临时目录是C:WindowsTemp没问题,给该目录加上Network Service的权限也无效。
后来有发现导入的时候同样报错了,无法读取excel文件,所以跟踪导入的代码,发现上传文件的临时目录竟然是C:Windows。继续跟踪PHPEXCEL的代码,找到了sys_get_temp_dir()方法。查看phpinfo,发现sys_temp_dir变量为空,于是手工指定sys_temp_dir = "C:WindowsTemp" upload_tmp_dir = C:WindowsTemp。问题解决。