PHP警告:shell_exec():无法执行'[command]'。

问题描述 投票:0回答:1

的背景。我有一个PHP脚本,调用 shell_exec. 目前,我只是想测试它的工作,并通过它运行一个基本的命令。同一脚本的不同副本存在于同一服务器上的两个不同的webapps中。两个应用程序的匿名认证都设置为IUSR。

这里是示例代码。

$output = shell_exec('dir 2>&1');
print_r($output);

在IIS中的一个网站上进行尝试,得到了想要的结果。然而,在另一个网站上,它没有捕获任何输出,而是给出了以下错误。

PHP Warning:  shell_exec(): Unable to execute 'dir 2>&1' in C:\inetpub\webapp\script.php on line 4

我唯一能找到的关于这个错误的信息是来自于 此处:

在Windows上使用PHP,如果你得到 "Warning: shell_exec() [function.shell-exec]. Unable execute "错误,那么你需要检查文件'C:\WINDOWS\system32/cmd.exe'的权限。Unable to execute "错误,那么你需要检查'C:\WINDOWS\system32\cmd.exe'文件的权限。你需要对这个文件进行重新执行的权限。 我建议使用sysinternals Process Monitor'procmon.exe'来确认试图运行'cmd.exe'的用户。筛选 "进程名 "是 "php-cgi.exe","路径 "以 "cmd.exe "结束。查看带有拒绝访问错误的任务的事件属性,它会显示 "冒充 "的用户名。 这通常是 "Internet Guest Account",通常是 "NT AUTHORITY/IUSR"。

然而,这似乎不像是一个权限问题。我不明白为什么它的工作通过网站而不是另一个。两个网站的匿名认证都设置为IUSR。

也。safe_mode 在php.ini中设置为 off.

还有什么需要我检查的吗?cmd.exe 是否需要明确的 IUSR 的 readexecute 权限?

php iis shell-exec
1个回答
0
投票

事实证明,不管是什么原因,IUSR 是问题所在。我不能确切地知道原因,但将受影响网站的匿名认证改为使用另一个用户,就成功了。所以说到底是权限问题。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.