IIS+PHP环境下文件上传无法访问问题
2016-04-08 00:00
579 查看
摘要: 在Windows下配置PHP运行环境,一个选择就是IIS FastCGI,有时会遇到Apache下没有的权限问题,文件上传是经常遇到的一个。
在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,第二步一般是这样
###“由于 Web 服务器上此资源的访问控制列表(ACL)配置或加密设置,您无权查看此目录或页面”问题的产生
如果我们没有在php.ini设置upload_tmp_dir属性,IIS默认的这个temp目录就是C:\Windows\Temp。而我们需要的2类用户对这个目录下的文件是缺乏相应的权限的。
#解决方案
在默认的temp目录设置相应权限,右键->属性->权限->添加。这种方案是不安全的,不推荐。
设置php.ini相应属性,在指定的目录设置相应权限,方法同上。
不使用
在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类用户对这个目录下的文件是缺乏相应的权限的。
#解决方案
在默认的temp目录设置相应权限,右键->属性->权限->添加。这种方案是不安全的,不推荐。
设置php.ini相应属性,在指定的目录设置相应权限,方法同上。
不使用
move_uploaded_file函数,直接读写
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- php7 读取php.ini[4]
- IIS 错误 Server Application Error 详细解决方法
- webshell查看IIS站点配置的方法
- Windows7下获得System权限问题解决方法
- 用一整天的时间安装postgreSQL NTFS权限
- IIS运行错误 Server Application Error 错误代码 Error: 8004的解决方法
- 星外系统关于权限的综合说明
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- iis Web站点崩溃的原因分析