在Windows下配置PHP运行环境,一个选择就是IIS FastCGI,有时会遇到Apache下没有的权限问题,文件上传是常常遇到的一个。在讲解决方案以前,咱们先来分析一下缘由。 ###IIS运行时的Windows用户组 在IIS FastCGI方式运行时,咱们经过浏览器请求的Web资源有2类,一个是经由php_cgi.exe产生的内容,一部分是静态资源,由IIS返回给用户。这2类用户有区别,前者是IIS_IUSERS,后者是Authenticated User或者是Anonymous。 ###PHP上传流程 PHP上传通常分两个步骤,第一步,是上传到一个upload_tmp_dir,第二步通常是这样move_uploaded_file($file["tmp_name"], $filePath)
。而移动文件是会保留其权限设置。 ###“因为 Web 服务器上此资源的访问控制列表(ACL)配置或加密设置,您无权查看此目录或页面”问题的产生 若是咱们没有在php.ini设置upload_tmp_dir属性,IIS默认的这个temp目录就是C:\Windows\Temp。而咱们须要的2类用户对这个目录下的文件是缺少相应的权限的。 #解决方案php
move_uploaded_file
函数,直接读写