在PHP中使用shell_exec()函数时,不会发生任何事情


when using shell_exec() function in PHP nothing happens

我正试图使用shell_exec()函数通过PHP执行以下命令:

sudo -u USERNAME -pPASSWORD echo "SOME-STRING" > /dev/tcp/127.0.0.1/64444

但什么也没发生(如果我手动将其复制/粘贴到终端,它就会工作)。在shell_exec()函数的$output中也没有任何内容。

因此,使用该命令,我试图通过具有sudo权限的另一个用户通过TCP发送一个字符串。

EDIT#1:完整的PHP命令如下:

shell_exec('sudo -u USERNAME -pPASSWORD echo "RLSET|79-192.168.1.33-0-1" > /dev/tcp/127.0.0.1/64444');

编辑#2:我还检查了phpinfo()函数和safe_mode is off,而且shell_exec()函数不在禁用函数列表中。

EDIT#4:我的PHP PATH变量包含以下位置:

/usr/local/bin:/usr/bin:/bin

我在这里迷路了,任何帮助都将不胜感激。

欺骗你的报价放你的完整命令路径:

 shell_exec("sudo -u USERNAME -pPASSWORD echo '"FULL-PATH-COMMAND'" > /dev/tcp/127.0.0.1/64444")

可能您的二进制文件(sudoecho…)不在PATH env变量中:

putenv('PATH', '/bin:/sbin:/usr/bin:/usr/sbin:') // etc...

你试过在-p后面加空格吗?

那应该是

shell_exec('sudo -u USERNAME -p PASSWORD echo "RLSET|79-192.168.1.33-0-1" > /dev/tcp/127.0.0.1/64444');

我刚刚在自己的机器上尝试了一些命令。

我试过

sudo -u USERNAME -p PASSWORD ls

它有效,但当我尝试时

sudo -u USERNAME -pPASSWORD ls

它给了我使用信息。