繁体   English   中英

PHP 警告:shell_exec():无法执行“[命令]”

[英]PHP Warning: shell_exec(): unable to execute '[command]'

背景:我有一个调用shell_exec的 PHP 脚本。 目前我只想测试它是否有效,并通过它运行一个基本命令。 同一脚本的单独副本存在于同一服务器上的两个单独的 Web 应用程序中。 两个应用程序的匿名身份验证都设置为 IUSR。

这是示例代码:

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

在 IIS 的一个网站上尝试它会得到所需的 output。 但是,另一方面,它没有捕获任何 output 而是给出以下错误:

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

我能找到的关于这个错误的唯一信息来自这里

使用 Windows 上的 PHP 时,如果收到“警告:shell_exec() [function.shell-exec]:无法执行”错误,则需要检查文件“C:\WINDOWS\system32\cmd.exe”的权限. 您需要对此文件的读取/执行权限。 我建议使用 sysinternals Process Monitor 'procmon.exe' 来确认尝试运行 'cmd.exe' 的用户。 “进程名称”的过滤器是“php-cgi.exe”,“路径”以“cmd.exe”结尾。 查看具有访问被拒绝错误的任务的事件属性,它将显示“模拟”用户名。 这通常是“Internet 访客帐户”,通常是“NT AUTHORITY\IUSR”。

但这似乎不是权限问题。 我不明白为什么它在网站上运行而不是另一个。 两个网站的匿名身份验证都设置为 IUSR。

此外,php.ini 中的safe_mode设置为off

还有什么我需要在这里检查的吗? cmd.exe 是否需要明确的 IUSR 读取/执行权限?

事实证明,无论出于何种原因,IUSR 都是问题所在。 我无法确切知道原因,但将受影响网站的匿名身份验证更改为使用它工作的另一个用户。 所以毕竟是权限相关的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM