从PHP查询IIS FastCGI设置
我试图使用WMI通过PHP的COM API以编程方式查询IIS中配置的FastCGI设置 使用WMI CIM Studio,我可以看到有一个FastCgiSection类,它有一个FastCgi成员数组,该数组正好包含我想要的设置(特别是ActivityTimeout和RequestTimeout): 然而,到目前为止,任何试图查询这一点的尝试都没有成功。查询Win32_处理器等的示例可以在线找到,但将其转换为FastCgiSection的查询是行不通的 到目前为止,我有这个,它没有输出任何东西:从PHP查询IIS FastCGI设置,php,iis,Php,Iis,我试图使用WMI通过PHP的COM API以编程方式查询IIS中配置的FastCGI设置 使用WMI CIM Studio,我可以看到有一个FastCgiSection类,它有一个FastCgi成员数组,该数组正好包含我想要的设置(特别是ActivityTimeout和RequestTimeout): 然而,到目前为止,任何试图查询这一点的尝试都没有成功。查询Win32_处理器等的示例可以在线找到,但将其转换为FastCgiSection的查询是行不通的 到目前为止,我有这个,它没有输出任何东西
$wmi = new \COM('winmgmts:{impersonationLevel=Impersonate}//./root/WebAdministration');
$arrData = $wmi->ExecQuery("SELECT * FROM FastCgiSection");
foreach ($arrData as $obj) {
echo "has result";
}
如何在PHP中通过WMI访问此API?以防您还没有看到它,这里有一个非常好的链接,详细介绍了如何执行与您尝试的相同操作: 我要说的一件事(如果您还没有)是检查并验证php.ini中是否启用了以下功能:
extension=php\u com\u dotnet.dll
您的查询返回对象,而FastCGI应用程序设置存储在类中
您的代码不访问FastCgi
成员,只访问WMI查询返回的对象。您需要在FastCgi
属性上进行另一个循环,以获得您想要的:
$wmi=new COM('winmgmts:{impersonationLevel=Impersonate}//./root/WebAdministration');
foreach($wmi->ExecQuery('SELECT * FROM FastCgiSection') as $section) {
foreach($section->FastCgi as $application) {
echo $application->ActivityTimeout, PHP_EOL;
echo $application->RequestTimeout, PHP_EOL;
}
}
请注意,为了使此代码正常工作,您需要:
- 在“php.ini”文件中启用(如Jonathon Hibbard所述)