在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的更多相关文章

  1. 针对windowsserver 创建iis站点访问出错的解决方案(HTTP 错误 500.19 - Internal Server Error)

    错误如下:   服务器错误 Internet信息服务 7.0 错误摘要HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效. 详 ...

  2. HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效。

    HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效. 详细错误信息模块 IIS Web Core 通知 BeginReques ...

  3. HTTP 错误 500.19 - Internal Server Error 错误代码 0x80070005 由于权限不足而无法读取配置文件

    HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效. 模块 IIS Web Core 通知 未知 处理程序 尚未确定 错误代码 ...

  4. IIS7 IIS7.5 IIS8.5 HTTP 错误 500.19 – Internal Server Error解决方案小记

    今天配置IIS(win8.1 IIS8.5)的web.config出现如下错误: HTTP 错误 500.19 – Internal Server Error无法访问请求的页面,因为该页的相关配置数据 ...

  5. IIS HTTP 错误 500.19 - Internal Server Error HTTP 错误 401.3 - Unauthorized 解决办法

    前言:IIS是一个强大的服务器管理器,当遇到 IIS HTTP 错误 500.19 - Internal Server Error  HTTP 错误 401.3 - Unauthorized 的解决办 ...

  6. IIS7.5 HTTP 错误 500.19 - Internal Server Error 问题的解决方案

    昨天在 windows 7 下用 IIS 7.5 运行一个以前用 .NET Framework 3.5 写的项目,发现总是出现 500.19 错误,如下: 百度了好久,没找到解决问题确切的答案,我也知 ...

  7. 服务器asp.net 3.5 HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效。

    配置错误:不能在此路径中使用此配置节.如果在父级别上锁定了该节,便会出现这种情况.锁定是默认设置的(overrideModeDefault="Deny"),或者是通过包含 over ...

  8. .NET CORE 部署到IIS上,HTTP 错误 500.19 - Internal Server Error

    经排查,是因为项目中web.config的rewrite节点不支持,注释掉此节点即可,或者尝试下载相关依赖以支持此节点

  9. IIS 部署.NET CORE 项目 出现 HTTP 错误 500.19 - Internal Server Error

    当出现这个错误时是因为服务器上没有.NET CORE对应的SDK以及运行时文件,我的.NET CORE版本是2.2,下载的就是2.2对应的文件. 附上.NET CORE2.2版本的下载链接 下载 .N ...

  10. Config IIS server6.0-- HTTP 错误 500.21 - Internal Server Error 解决方案

    HTTP 错误 500.21 - Internal Server Error 解决方案         不久前重新安装了Windows7,在安装了VS2010 开发平台之后,将网站发布到IIS,访问发 ...

随机推荐

  1. MybatisPlus的各种查询方法

    MybatisPlus的各种查询方法 合并转载于https://my.oschina.net/u/241218/blog/1838534/和https://my.oschina.net/u/24275 ...

  2. Linux 命令:time

    参考链接: time 命令

  3. OpenCV4之特征提取与对象检测

    1.图像特征概述 图像特征的定义与表示 图像特征表示是该图像唯一的表述,是图像的DNA 图像特征提取概述 传统图像特征提取 - 主要基于纹理.角点.颜色分布.梯度.边缘等 深度卷积神经网络特征提取 - ...

  4. 代码随想录算法训练营第二天| LeetCode 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

    977.有序数组的平方 题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array/ 文章讲解:https://programmercarl ...

  5. keras-retinanet 环境搭建 tensorflow2.3

    keras-retinanet 环境搭建 tensorflow2.3 前言 搭建好了 [tensorflow-gpu 2.5] 之后,接到一个指示,跑起来这个开源的库 keras-retinanet ...

  6. 如何在CMD窗口运行python文件

    进入文件所在的路径输入: python  文件名

  7. 文心一言 VS 讯飞星火 VS chatgpt (69)-- 算法导论6.5 8题

    八.HEAP-DELETE(A,i)操作能够将结点 i 从堆 A 中删除.对于一个包含 n个元素的堆,请设计一个能够在 O(lgn)时间内完成的 HEAP-DELETE 操作. 文心一言: 要在 O( ...

  8. pentaho(keetle)数据同步实践

    pentaho(keetle)数据同步实践 1 pentaho简介 pentaho可读作"彭塔湖",在keetle被pentaho公司收购后改名而来. pentaho是一款开源ET ...

  9. 华为云GaussDB(for Influx)单机版上线,企业降本增效利器来了

    本文分享自华为云社区<华为云GaussDB(for Influx)单机版上线,企业降本增效利器来了>,作者:GaussDB 数据库 . 1.背景 华为云GaussDB(for Influx ...

  10. 前后端分离中台框架 Admin.Core 学习-介绍与配置说明

    中台框架后端项目 Admin.Core 的介绍与配置说明 中台admin是前后端分离权限管理系统,Admin.Core为后端项目,基于.NET 7.0开发. 支持多租户.数据权限.动态 Api.任务调 ...