设置 PHP(或 I_USER [我不确定这里...])连接到 iisweb.vbs 的权限

hat*_*hua 2 php iis cmd exec

我一直在试图找出一种方法来管理我们的工作领域和轻松创建一个SimpleDNS类,但现在我在它的IIS服务器管理端,我只是失去了是怎么回事。

这是我正在运行以测试它的 PHP 代码。

<?php
$cmd = 'iisweb /create c:\websites\examplesite.com\www "Example Domain!" /d www.examplesite.com';

exec($cmd,$data);
print_r($data);
?>
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,我得到:

Array ( [0] => Error &H80041003: Access denied
Run Code Online (Sandbox Code Playgroud)

我完全不知道如何为此设置权限。

这是好的部分!当我运行时,<?php exec('ping google.com',$data);?>:它可以无缝运行。

在设置 iisweb.vbs(iisweb vbs 文件)的权限时,我不知道从哪里开始。我什至不知道我是否应该为该文件设置权限。我不知道是否应该在控制台中设置 CGI 选项。我迷路了。

有人可以帮我吗?我在这是要干嘛?

Kev*_*Kev 6

您的代码将以两种身份之一运行。

  1. 网站运行所在的应用程序池的标识(例如,如果使用默认值,则为网络服务)。您可以通过打开应用程序池的属性窗口并选择身份选项卡来找到这一点。

  2. 您可以在网站属性 -> 目录安全 -> 身份验证和访问控制(单击编辑按钮)中找到网站匿名用户的身份。

快速CGI

如果您在 FastCGI 和c:\php\php.ini配置值下运行 PHP,fastcgi.impersonate = 1那么用户身份就是上面的站点匿名用户(选项 2)。如果那样的fastcgi.impersonate = 0话,PHP 脚本将在应用程序池的身份下执行(选项 1)。

您可以通过查看.php站点的脚本映射(网站属性 -> 主目录 -> 配置 -> 应用程序扩展)来判断 PHP 是否配置为在 FastCGI 下执行。如果设置为,C:\WINDOWS\system32\inetsrv\fcgiext.dll那么您正在运行 FastCGI。

没有 FastCGI

如果您的.php脚本映射未配置为使用,C:\WINDOWS\system32\inetsrv\fcgiext.dll 则脚本将以站点匿名用户的身份运行(上面的选项 2)。

在所有情况下,所使用的帐户都必须具有管理员权限才能运行 IIS 管理脚本。