PHP exec调用PsExec报“The handle is invalid”问题排查求助
PHP exec()调用PsExec返回“The handle is invalid”,但直接命令行运行正常
我已经翻遍了各种论坛和Stack Overflow的帖子,折腾好几天了还是没解决这个问题,实在头大。
我写了一个极简的PHP页面来测试远程执行命令:
<?php exec('PsExec.exe -accepteula \\192.168.10.11 -u "administrator" -p "Ph0nYP@sSw0rd" hostname', $output, $returnVar); print_r($output); print_r('Return value is: ' . $returnVar); ?>
这个脚本本该在目标机器192.168.10.11上执行hostname命令,但我用php.exe mypage.php运行时,始终得到如下输出:
Couldn't access 192.168.10.11: The handle is invalid.
Connecting to 192.168.10.11...
PsExec v2.2 - Execute processes remotely
Copyright (C) 2001-2016 Mark Russinovich
Sysinternals - www.sysinternals.com
我已经做了这些验证:
- 直接在命令行运行完全相同的PsExec命令,能正常返回目标机器的主机名
- 所用的管理员账户有权限访问目标机器
192.168.10.11 - 通过Windows的Run窗口访问
\\192.168.10.11\c$,能正常浏览共享内容 - 换成PHP的
shell_exec()函数调用同样的命令,也会出现完全一样的错误
另外,运行PHP脚本时用Wireshark抓包,完全没捕获到和目标机器相关的流量,我甚至不确定PsExec是不是真的启动了。
我想搞清楚这里的“The handle is invalid”到底是什么意思,有没有进一步排查或者解决的办法?我的最终目标是通过POST请求的参数,在目标机器上执行PowerShell脚本,虽然不一定非要用当前这个方法,但我真的很好奇为什么会失败。
内容的提问来源于stack exchange,提问作者Tikiyetti
相关产品推荐
相关产品推荐

