所以我调用PHP函数来访问Windows 7服务的状态,如下所示:
win32_query_service_status($service_name);
在本地安装的WAMP实例下运行时,该函数会按预期返回一组信息。
在IIS下运行时,我收到错误状态5,根据文档,这对应于以下错误:
WIN32_ERROR_ACCESS_DENIED 0x00000005
The handle to the SCM database does not have the appropriate access rights.
因此,使用phpinfo()
,我检查运行PHP环境的USERNAME。在WAMP站点上,该服务以我的用户ID(在Windows本地Administrators组中)运行。
在IIS版本下,用户为F6729-44TP6S7$
(这是我的计算机名称,后跟$
)。因此,解决方案可能只是向该用户授予Windows中服务控制管理器(SCM)的必要权限。
但问题是,我对IIS(或Windows)的内部工作原理知之甚少,无法知道此用户ID的来源(意味着我不知道如何授予它必要的权限) 。用户不在我的计算机管理控制台中,也无法找到IIS管理工具中的定义位置。
所以问题是:我需要做些什么才能让这个PHP函数在IIS下运行?如何在IIS下为PHP管理器授予必要的权限。或者,如何更改运行PHP管理器的用户ID?
答案 0 :(得分:2)
显然,这只是一个知道google的内容的问题。一旦你知道你在寻找什么,你就更有可能找到它。
https://serverfault.com/questions/232907/wcf-service-hosted-in-iis7-with-administrator-rights
答案是:
在IIS管理器中,转到:
网站> [您的网站]
在IIS子部分下的“功能”视图中
身份验证>匿名身份验证> [右键“编辑...”]>选择:应用程序池标识[确定]
这允许匿名连接到网站,在操作系统级别以管理员用户身份运行PHP(和其他IIS服务)。
如果有人想要复制此答案或在您的答案中添加任何有用的信息以获得赏金,那么请继续。卡玛,生命的循环,以及所有这些。