php抓取网页数据(http500内部服务器连接错误|解决方法原因分析综合分析)
优采云 发布时间: 2022-03-15 13:19php抓取网页数据(http500内部服务器连接错误|解决方法原因分析综合分析)
http 500 内部服务器错误表示 IIS 服务器无法解析 ASP 代码。尝试访问静态页面,看看是否也会出现此问题。如果访问静态页面没有问题,应该分为以下几类
情况分析:
① 是否更改了计算机名称?
② 站点所在的文件目录是否有自定义的安全属性。
③ 安装域控制器后是否调整了域策略。如果这是其中一种情况,请
改回参数设置,看看是否能解决问题。
如果静态空间也无法访问,则解析尚未生效。
首先,您必须确定错误的原因:
让 IE 显示详细的错误信息:
菜单--工具--Internet选项--高级--显示友好的HTTP错误信息,去掉这个选项
,然后刷新错误页面,就可以看到详细的错误信息,这对于帮助你判断错误在哪里很有帮助。
帮助!
500错误的常见原因有:ASP语法错误、ACCESS数据库连接语句错误、文件引用
收录路径有错误,使用了服务器不支持的组件,例如 FSO 等。
另一种解释:
xp下的IIS5.1无法执行ASP文件,报错!500 内部服务器连接错误|解决方法
原因分析
综合分析以上错误表现,可以看出http 500内部错误主要是iwam账号(即我电脑中的iwam_myserver账号)密码错误造成的。
在详细分析http500内部错误的原因之前,先简单介绍一下iwam账号:iwam账号是安装IIS5时系统自动创建的内置账号,主要用于启动应用程序的上网信息服务过程之外。iwam 帐户的名称将根据每台计算机的 netbios 名称而有所不同。一般格式为iwam_machine,由“iwam”前缀、连接线“_”和计算机的netbios名称组成。我电脑的netbios名字是myserver,所以我电脑上的iwam账号的名字是iwam_myserver,和iis匿名账号isur_machine的命名方式很相似。
iwam账户建立后,由活动目录、iis元数据库和com+应用程序共同使用。账号密码由三方保存,操作系统负责同步三方保存的iwam密码。按照常理,我们可以放心,负责操作系统的工作不用担心出错,但不知道是bug还是其他原因,系统对iwam账号的密码同步有时会失败,导致三方iwam账号使用的密码不一致。当iis或com+应用程序使用错误的iwam密码登录系统并启动iis进程外池应用程序时,系统会因密码错误而拒绝请求,
三.解决办法
知道了http 500内部错误的原因,解决方法比较简单,就是手动同步活动目录、iis元数据库和com+应用中的iwam账号密码。
具体操作分为三个步骤,都需要以管理员身份登录电脑,提供足够的操作权限(iwam账号以iwam_myserver为例)。
(一)更改活动目录中 iwam_myserver 帐户的密码
因为iwam账号的密码是系统控制的,随机生成的,我们不知道是什么。为了完成后面两步的密码同步,我们必须将iwam账户的密码设置为一个我们知道的值。
1、选择开始->程序->管理工具->Active Directory 用户和计算机以启动 Active Directory 用户和计算机管理单元。
2、点击“用户”,右侧选择“iwam_myserver”,右键选择“重置密码(t)...”,在弹出的重置密码框中为iwam_myserver设置新密码,这里我们设置为“aboutnt2001”(不带引号),OK,等待修改密码成功。
(二)同步iis元数据库中iwam_myserver账户的密码
可能是因为这个改动太敏感太重要了,微软没有提供明确的用户界面让我们修改iis元数据库中的iwam_myserver账号密码,只提供了一个iis5的管理脚本adsutil.vbs,位于c:\inetpub \ adminscripts 子目录(位置可能会根据您在安装 iis5 时设置的设置而有所不同)。
adsutil.vbs 脚本功能强大,参数多,用法复杂。这里只介绍使用该脚本修改iwam_myserver账户密码的方法:
adsutil 设置 w3svc/wamuserpass 密码
“password”参数是要设置的iwam账号的新密码。因此,将iis元数据库中iwam_myserver账户密码修改为“aboutnt2001”的命令为:
c:\inetpub\adminscripts>adsutil 设置 w3svc/wamuserpass “aboutnt2001”
修改成功后,系统会显示如下提示:
wamuserpass:(字符串)“aboutnt2001”
(三)sync com+ 应用程序使用的 iwam_myserver 的密码
要同步com+应用程序使用的iwam_myserver的密码,我们有两种选择:一种是使用组件服务mmc snap-in,另一种是使用iwam账户同步脚本synciwam.vbs。
1、使用组件服务 mmc 管理单元
(1)启动组件服务管理单元:选择“开始”->“运行”->“mmc”,启动管理控制台,打开“添加/删除管理单元”对话框,添加“组件服务”管理单元添加。
(2)找到“组件服务”->“计算机”->“我的电脑”->“com+Applications”->“进程外池化应用程序”,右键“进程外池化应用程序”应用程序“池应用程序”->“属性”。
(3)切换到“进程外池应用程序”属性对话框的“标志”选项卡。在“此应用程序在以下帐户下运行”选择中,将选择“此用户”,并且用户名是“iwam_myserver”,这些都是默认值,不需要更改。在下面的“密码”和“确认密码”文本框中输入正确的密码“aboutnt2001”,确认退出。
(4)如果系统提示“应用程序是由多个外部产品创建的,您确定要被这些产品支持吗?”,您可以确认一下。
(5)如果我们在iis中将其他一些web的“应用保护”设置为“高(独立)”,那么这个web使用的com+应用的iwam账号密码也需要同步。重复(< @1)-(4)步骤,同步其他对应进程外应用的iwam账号密码。
2、使用iwam账号同步脚本synciwam.vbs
其实微软已经发现iwam账号密码同步有问题,所以在iis5的管理脚本中,单独写了一个脚本synciwam.vbs用于iwam账号密码同步。该脚本位于 c:\inetpub\adminscripts 子目录中(位置可能会根据您安装 iis5 时的设置而有所不同)。
synciwam.vbs 脚本的使用比较简单:
cscript synciwam.vbs [-v|-h]
“-v”参数表示详细显示脚本执行的整个过程(推荐),“-h”参数用于显示简单的帮助信息。
在com+应用中同步iwam_myserver账号的密码,我们只需要执行“cscript synciwam.vbs -v”,如下:
cscript c:\inetpub\adminscripts\synciwam.vbs -v
microsoft (r) windows 脚本宿主版本 5.6
版权所有 (c) 微软公司 1996-2000。版权所有。
wamusername:iwam_myserver
wamuserpass:aboutnt2001
iis 应用程序定义:
名称、应用隔离、包 ID
w3svc, 0, 3d14228c-fbe1-11d0-995d-00c04fd919c1}
根, 2,
iishelp, 2,
iisadmin, 2,
iissamples, 2,
msadc, 2,
根, 2,
iisadmin, 2,
iishelp, 2,
根, 2,
根, 2,
进程外应用程序定义:
计数:1
3d14228d-fbe1-11d0-995d-00c04fd919c1}
更新应用程序:
名称:iis 进程外池应用程序密钥:3d14228d-fbe1-11d0-995d-00c04fd919c1}
从上述脚本的执行可以看出,使用synciwam.vbs脚本比使用组件服务更全面、更快捷。它首先从iis元数据库中找到iwam账号“iwam_myserver”,取出对应的密码“aboutnt2001”,然后搜索所有已定义的iis应用程序和进程外应用程序,并同步每个进程外应用程序应用程序的iwam帐户一个密码。
在使用synciwam.vbs脚本时,要注意一个问题,即在运行synciwam.vbs之前,必须确保iis元数据库和活动目录中的iwam密码一致。因为synciwam.vbs脚本是从iis元数据库而不是活动目录中获取iwam账号的密码,所以如果iis元数据库中的密码不正确,synciwam.vbs获取的密码也会出错,同步操作执行到“更新应用程序”,系统会报80110414的错误,即“Cannot find application 3d14228d-fbe1-11d0-995d-00c04fd919c1}”。
好了,至此,活动目录中的iwam账号密码、iis元数据库和com+应用程序的密码已经同步成功,你的asp程序又可以运行了!
修改成功后,系统会显示如下提示:
-------------------------------------------------- -
经过测试,显示应该是
wamuserpass:(字符串)“*******”
http 500 内部服务器错误可能与 IIS 服务器无法专门加载应用程序有关:
现象: