IIS服务器环境下某路径下所有PHP接口无法运行报500.19错误

IIS服务器环境下某路径(文件夹)下所有PHP接口无法运行报500.19错误

环境:IIS8.5 + php7.2.1
错误描述:某目录下(如 d:\web\A)所有php接口文档运行错误,接口测试工具返回空内容,浏览器提示500错误

解决方式:

  1. 开启PHP和IIS错误日志;
  2. 查看IIS日志,发现线索
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status time-taken
2018-07-31 09:33:36 172.0.0.0 GET /xxxx/xxx.php - 443 - 100.0.0.0 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/64.0.3282.140+Safari/537.36+Edge/17.17134 - 500 19 183 15
  1. 最主要是字段帮了忙 500 19代表500.19错误,经查是web服务器内部运行错误
  2. 仔细查看IIS各项设置并回忆可能的改动,发现 A 目录属于“新增”目录,里边所有文件是从之前测试服务器上复制过来,其原属于测试服务器上一个独立“网站”配置,因此 web.config 文件中包含了对".txt"的请求筛选,即不允许访问".txt"的文件。当 A 目录整体复制到当前服务器时,保存到默认“网站”下的一个虚拟目录,而默认网站也设置了相同的请求筛选,导致配置冲突,在对 A 进行访问时整体路径都出错。
  3. 打开 A 下的配置文件,去掉所有和所属“网站”冲突的配置,具体为
<security>
            <requestFiltering>
                <fileExtensions>
                    <add fileExtension=".txt" allowed="false" />
                </fileExtensions>
            </requestFiltering>
        </security>

并应用,重启网站,解决

posted @ 2018-07-31 18:12  试试手气  阅读(753)  评论(0编辑  收藏  举报