IIS和PHP相关权限问题及解决方案_500错误_500.19 - Internal Server Error与401未授权错误_401.3 - Unauthorized
在IIS添加网站(假设站点为xxx.yyy.com,本例假设IIS版本为7.5或以上),如果采用IIS默认配置,会在创建站点同时创建相应同名的“应用程序池”(也是xxx.yyy.com)。在这种默认的情况下,其最终用户凭据为“身份验证”当中的“特定用户”(IUSR),访问目录资源时就会验证IUSR的权限。



在添加完站点中,不作其它操作的情况下,直接远程访问(即不在与IIS服务器同个机子上访问)http://xxx.yyy.com/,会出现:
401 - 未授权: 由于凭据无效,访问被拒绝。

原因: IIS处理WEB请求指定目录的时候,会根据 “基本设置”-“连接为” 当中的指定的账户作为路径凭据,如果指定的账户没有该路径的权限,则访问失败(至于出现什么的的失败信息,后讲。上边401是失败信息的形式之一)。
但上边的错误形式并不是详细的错误形式,因为是远程访问的出错信息,如果本机访问(即在IIS服务器同个机子上访问),会是如下更加具体的错误信息:
HTTP 错误 401.3 - Unauthorized
由于 Web 服务器上此资源的访问控制列表(ACL)配置或加密设置,您无权查看此目录或页面。
错误代码:0x80070005

远程访问与本机访问出现不同错误信息,但都是同一个错误。这个是源于IIS默认配置中httpErrors项的errorMode设置为DetailedLocalOnly。它表示如果站点出错时,如果是本机访问,则输出详细错误,如果是远程访问,则隐藏详细错误。也可以直接配置为“Detailed”,此时不管本机还是远程,访问出错都显示详细错误(但如果是真实的服务器,为安全性起见,如果需要,建议配置为DetailedLocalOnly)
为解决IUSR的权限,直接添加目录,给予IUSR账户的读取权限:

之后再次访问,网站可以正常访问了(但这不是最终正确的结果,因为此时,站点根目录里还没有web.config文件)。
在站点功能视图中进行一些操作(如“处理器映射”、“默认文档”、“错误页”),使根目录产生web.config文件。本例进行“默认文档”,删除其中的"Default.htm"然后应用,产生的web.config。此时再远程访问,则会出现以下错误:
500 - 内部服务器错误。
您查找的资源存在问题,因而无法显示。

采用本机访问,展示了“500内部服务器错误”相应的更详细的信息:
HTTP 错误 500.19 - Internal Server Error
无法访问请求的页面,因为该页的相关配置数据无效。
错误代码 0x80070005
配置错误 由于权限不足而无法读取配置文件
配置文件 ....... \wwwroot\web.config

可以点击“查看更多信息”即可定位到https://learn.microsoft.com/zh-CN/troubleshoot/developer/webapps/iis/health-diagnostic-performance/http-error-500-19-webpage#hresult-code-0x80070005
该页面显示了该错误的相关解决方案。根据该解决方案,添加wwwroot目录的IIS_IUSRS组的读取权限,即可解决web.config权限问题导致的500.19问题(但问答如何产生的,后讲)
相应,IIS网站的日志文件里也记录了错误信息:(如401.3与500.19错误会分别显示“401 3”与“500 19”)

如果需要,可以参见http客户端错误相应文件目录(C:\inetpub\custerr\zh-CN\),该目录汇集了所有常见http错误的一些信息内容显示,如:

另外,如果是PHP目录权限的问题,则访问后会出错。
远程访问时出错信息如下:

本机访问时的详细错误信息如下:
应用程序“XXX.YYY.COM”中的服务器错误
HTTP 错误 500.0 - Internal Server Error
对找不到的文件启用文件监视
错误代码 0x80070003

IIS日志的记录的相关内容为:

下边详解为什么IIS_IUSRS可以解决有web.config文件而不出错。先看一张图:
上图表明: “连接为”的两种方式,对于web.config权限是有影响的。
当“连接为”-特定用户,则站点根目录有特定用户的读取权限时,有没有web.config文件,处理html都不会出现web.config的权限问题。
当“连接为”-应用程序用户(通过身份验证),则站点根目录有特定用户的读取权限时:如果没有web.config文件,则处理html不会出现权限问题。
如果有web.config文件,站点根目录只有特定用户读取权限时,会出现web.config权限问题:500 - 内部服务器错误 或者 HTTP 错误 500.19 - Internal Server Error
上述的500.19错误,可以通过附加应用程序池“标识”(如通用的IIS_IUSRS)的读取权限到该站点根目录来解决问题。
应用程序池“标识”可通过站点的 应用程序池-高级设置-标识 进行设置,默认为ApplicationPoolIdentity。
应用程序池“标识”的设置中,有“内置账户”与“自定义账户”两种。
其中“内置账户”又分四种:LocalSerivce、NetworkService、LocalSystem、ApplicationPoolIdentity,自定义账户则是本地账户(通常创建属于IIS_IUSRS组的用户,但嫌弃权限大,也可以改为Guests组)。
但不管如何指定应用程序池的“标识”,其可以通用的权限账户为:IIS_IUSRS以及IIS AppPool\xxx.yyy.com。
任何被设置为应用程序池“标识”的账户(如LocalService或自定义的web_xxx_yyy_com用户),都“拥有”应用程序池默认标识组IIS_IUSRS类似的功能权限(能够执行PHP模块与处理web.config)
所以当设置PHP目录的读取与执行权限以及设置web.config读取权限(设置到web.config的所在目录),可以通用IIS_IUSRS与IIS AppPool\xxx.yyy.com,于是,可以给之前默认设置下出现500.19的站点,
给予根目录IIS_IUSRS读取权限(或IIS AppPool\xxx.yyy.com读取权限)。
一般PHP与IIS搭建时的权限设置,可以有通用的设置:






至此,关于PHP+IIS7.X以及的搭建后权限问题解决是没有问答的(这里以读取权限为例子,至于写入权限,根据最终用户相应指定即可)。
不过如果是单纯的PHP站点,首先应该在站点的应用程序池的“基本设置里”,应该将其“.NET Framework版本””修改为“无托管代码”,以排除asp.net权限方面的干扰,防止asp.net相关的“/”应用程序中的服务器错误。
否则一旦出现“/”应用程序中的服务器错误,就要另到:C:\Windows\Microsoft.NET\Framework64\.NET版本号\Temporary ASP.NET Files 设置另外ASP.NET相关的读取与写入权限了。
IIS和PHP相关权限问题及解决方案_500错误_500.19 - Internal Server Error与401未授权错误_401.3 - Unauthorized的更多相关文章
- 针对windowsserver 创建iis站点访问出错的解决方案(HTTP 错误 500.19 - Internal Server Error)
错误如下: 服务器错误 Internet信息服务 7.0 错误摘要HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效. 详 ...
- HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效。
HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效. 详细错误信息模块 IIS Web Core 通知 BeginReques ...
- HTTP 错误 500.19 - Internal Server Error 错误代码 0x80070005 由于权限不足而无法读取配置文件
HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效. 模块 IIS Web Core 通知 未知 处理程序 尚未确定 错误代码 ...
- IIS7 IIS7.5 IIS8.5 HTTP 错误 500.19 – Internal Server Error解决方案小记
今天配置IIS(win8.1 IIS8.5)的web.config出现如下错误: HTTP 错误 500.19 – Internal Server Error无法访问请求的页面,因为该页的相关配置数据 ...
- IIS HTTP 错误 500.19 - Internal Server Error HTTP 错误 401.3 - Unauthorized 解决办法
前言:IIS是一个强大的服务器管理器,当遇到 IIS HTTP 错误 500.19 - Internal Server Error HTTP 错误 401.3 - Unauthorized 的解决办 ...
- IIS7.5 HTTP 错误 500.19 - Internal Server Error 问题的解决方案
昨天在 windows 7 下用 IIS 7.5 运行一个以前用 .NET Framework 3.5 写的项目,发现总是出现 500.19 错误,如下: 百度了好久,没找到解决问题确切的答案,我也知 ...
- 服务器asp.net 3.5 HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效。
配置错误:不能在此路径中使用此配置节.如果在父级别上锁定了该节,便会出现这种情况.锁定是默认设置的(overrideModeDefault="Deny"),或者是通过包含 over ...
- .NET CORE 部署到IIS上,HTTP 错误 500.19 - Internal Server Error
经排查,是因为项目中web.config的rewrite节点不支持,注释掉此节点即可,或者尝试下载相关依赖以支持此节点
- IIS 部署.NET CORE 项目 出现 HTTP 错误 500.19 - Internal Server Error
当出现这个错误时是因为服务器上没有.NET CORE对应的SDK以及运行时文件,我的.NET CORE版本是2.2,下载的就是2.2对应的文件. 附上.NET CORE2.2版本的下载链接 下载 .N ...
- Config IIS server6.0-- HTTP 错误 500.21 - Internal Server Error 解决方案
HTTP 错误 500.21 - Internal Server Error 解决方案 不久前重新安装了Windows7,在安装了VS2010 开发平台之后,将网站发布到IIS,访问发 ...
随机推荐
- PTA 21级数据结构与算法实验8—排序
目录 7-1 统计工龄 7-2 寻找大富翁 7-3 点赞狂魔 7-4 插入排序还是归并排序 7-5 插入排序还是堆排序 7-6 逆序对 7-7 堆排序 7-8 石子合并 7-9 第k小 7-10 快速 ...
- 河南省第十四届icpc大学生程序设计竞赛-clk
这次比赛赛程比较长,520出发,521,回学校,出发的那一天有点热,感觉不是很好,而且那一天感觉有点生病,应该只是普通感冒,热身赛的时候被oier吊打,省实验真厉害,晚上回酒店后,我喊队友,补了前年的 ...
- quarkus实战之三:开发模式(Development mode)
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 前文咱们曾提到过几种启动方式,有一种用mav ...
- rpm安装21c单实例数据库
linux 7.6 使用rpm安装21c单实例数据库 一.基础环境配置 1.1 关闭防火墙 systemctl stop firewalld systemctl disable firewalld s ...
- 八万乌云漏洞库——Ubuntu本地Docker搭建环境
环境准备 ubuntu16.04虚拟机 换国内源 vi /etc/apt/sources.list 阿里源 deb http://mirrors.aliyun.com/ubuntu/ xenial m ...
- gitlab-runner-config-in-docker
gitlab in docker 网上有很多现成的解决方案,本文仅作流程梳理,若不需要,可直接用gitlab官方提供的镜像 installation Dockerfile FROM registry. ...
- BurpSuite设置上游代理访问内网
转载原文 原理知道了后,开始! 拿到B的shell后,添加路由 拿到B的shell后,开启sock4 在D主机上设置好 最后成功抓到包
- 《深入理解Java虚拟机》笔记:垃圾收集算法和HotSpot的算法实现
一.垃圾收集算法 由于垃圾收集算法的实现涉及大量的程序细节,而且各个平台的虚拟机操作内存的方法又各不相同,因此本节不打算过多地讨论算法的实现,只是介绍几种算法的思想及其发展过程. 垃圾收集算法概要 1 ...
- Room组件的用法
一.Android官方ORM数据库Room Android采用Sqlite作为数据库存储.但由于Sqlite代码写起来繁琐且容易出错,因此Google推出了Room,其实Room就是在Sqlite上面 ...
- Stack Overflow开发者调查发布:AI将如何协助DevOps
Stack Overflow 发布了开创性的2023年度开发人员调查报告 [1].报告对 90,000 多名开发人员进行了调查,全面展示了当前软件开发人员的体验.接下来,本文将重点介绍几项重要发现,即 ...
