使用 php 函数访问 cmd 命令被拒绝
Getting access is denied for cmd command using php function
我在 IIS 6 下 运行ning PHP。
当我对 运行 cmd 命令(如 exec()
或 system()
)使用任何 PHP 函数时,它总是显示 "Access is denied".
甚至像 ipconfig
这样的命令也显示相同的 "access is denied" 错误。我已将所有权限授予我的项目文件夹,但它不起作用。
请让我知道它的原因。
当您使用 exec
执行某些命令时,该命令将使用 运行 IIS(在 IIS 6 上通常是 IUSR_«machine-name»
)的用户帐户执行,因此您的项目的权限与此无关。
您需要做的是碰碰文件C:\Windows\System32\cmd.exe
的权限并添加IUSR_«machine-name»
.
的权限
除此之外,您可能需要使用 CACLS 来更改访问控制列表。将 IUSR_MachineName
替换为执行 PHP 的用户的以下命令,然后执行此命令:
CACLS c:\windows\system32\cmd.exe /E /G IUSR_MachineName:F
如果出现错误且无法更改 ACL,最后的资源是先执行以下命令:
takeown /F c:\windows\system32\cmd.exe
您可能还需要为您尝试执行的命令设置正确的权限和 ACL(例如 C:\Windows\System32\schtasks.exe
)
注意:不过请谨慎操作。如果您有一些允许您的用户执行命令的漏洞,它可能会产生严重的后果。
我在 IIS 6 下 运行ning PHP。
当我对 运行 cmd 命令(如 exec()
或 system()
)使用任何 PHP 函数时,它总是显示 "Access is denied".
甚至像 ipconfig
这样的命令也显示相同的 "access is denied" 错误。我已将所有权限授予我的项目文件夹,但它不起作用。
请让我知道它的原因。
当您使用 exec
执行某些命令时,该命令将使用 运行 IIS(在 IIS 6 上通常是 IUSR_«machine-name»
)的用户帐户执行,因此您的项目的权限与此无关。
您需要做的是碰碰文件C:\Windows\System32\cmd.exe
的权限并添加IUSR_«machine-name»
.
除此之外,您可能需要使用 CACLS 来更改访问控制列表。将 IUSR_MachineName
替换为执行 PHP 的用户的以下命令,然后执行此命令:
CACLS c:\windows\system32\cmd.exe /E /G IUSR_MachineName:F
如果出现错误且无法更改 ACL,最后的资源是先执行以下命令:
takeown /F c:\windows\system32\cmd.exe
您可能还需要为您尝试执行的命令设置正确的权限和 ACL(例如 C:\Windows\System32\schtasks.exe
)
注意:不过请谨慎操作。如果您有一些允许您的用户执行命令的漏洞,它可能会产生严重的后果。