IIS执行PHP出现500错误原因(权限不足)
IIS中应用程序池的运行账户(标识)有以下4个选项LocalService 本地服务
LocalSystem 本地系统
NetWorkService 网络服务
ApplicationPoolIdentify
默认情况下新建的应用程序池标识为ApplicationPoolIdentify,官网文档解释(传送门)为:
大概的意思:在IIS7.5以后的版本中,新建的所有程序池默认运行标识为ApplicationPoolIdentity。启动该应用程序池时,会自动创建一个与应用程序池同名的虚拟账户来运行该进程。
说它是虚拟的,是因为在用户管理里看不到该用户或用户组,在命令行下输入net user也无法显示,但该帐号又是确实存在的。可以通过任务管理器观察到w3wp.exe这个web程序进程是以应用程序的名称作为用户名运行的。
解决方法
在文件夹安全,增加权限用户,手动输入:“IIS AppPoolDefaultAppPool”(即IIS AppPool应用程序池名),但是window2008会提示无法找到。
使用管理员身份命令icacls c:\wwwroot /C /grant "IIS AppPool\DefaultAppPool":(CI)(OI)RW
那么就给wwwroot目录增加了 一个读写权限的DefaultAppPool用户。这时候运行PHP就不会出现500错误。