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

在PHP中使用shell_exec()函数时,不会发生任何事情,php,linux,ubuntu,tcp,Php,Linux,Ubuntu,Tcp,我试图通过PHP使用shell\u exec()函数执行以下命令: sudo -u USERNAME -pPASSWORD echo "SOME-STRING" > /dev/tcp/127.0.0.1/64444 但是什么也没有发生(如果我手动将其复制/粘贴到终端,它就会工作)。shell_exec()函数的$output中也没有任何内容 因此,使用该命令,我试图通过具有sudo权限的其他用户通过TCP发送字符串 编辑#1:完整的PHP命令如下所示: shell_exec('sudo

我试图通过PHP使用
shell\u exec()
函数执行以下命令:

sudo -u USERNAME -pPASSWORD echo "SOME-STRING" > /dev/tcp/127.0.0.1/64444
但是什么也没有发生(如果我手动将其复制/粘贴到终端,它就会工作)。
shell_exec()
函数的
$output
中也没有任何内容

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

编辑#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_模式已关闭
而且
shell_exec()
函数不在禁用函数列表中

编辑#4:My PHP PATH变量包含以下位置:

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


我在这里迷路了,如果您能提供任何帮助,我们将不胜感激。

Scape您的报价将完整的命令路径:

 shell_exec("sudo -u USERNAME -pPASSWORD echo \"FULL-PATH-COMMAND\" > /dev/tcp/127.0.0.1/64444")
可能您的二进制文件(
sudo
echo
,…)不在
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

它向我提供了使用信息。

否这是在本地执行的,本地服务器始终在侦听TCP连接。对不起,我应该在我的问题中更具体一些。我用了撇号,所以引号没什么区别。我试着在我的代码上面加上你的代码,但没有任何改变。。。有什么方法可以调试shell_exec()发生的情况吗?您是否尝试过编写一个简单的命令,如
shell_exec('whoami')
,并查看是否有输出?是的'whoami'返回了www数据。像“ls”这样的简单命令工作得很好,还返回$output。这并没有改变任何事情。我甚至在没有密码的情况下试过,但什么也没发生。这条线单独起作用吗?echo“RLSET | 79-192.168.1.33-0-1”>/dev/tcp/127.0.0.1/64444'如果我手动将其复制到终端,它可以工作是,但是如果我使用PHP执行,它就不能工作。