php正在将命令发送到错误的tmux目录

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

所以基本上,我试图在按下按钮时将命令发送到csgo服务器,以便可以从任何地方轻松进行管理。当我按下按钮时,运行以下php代码块:

    if (isset($_POST['test']))
{
    echo shell_exec("tmux send-keys -t ze \"sv_cheats\" ENTER 2>&1");
}

我的tmux会话没有收到任何输入,回声说有no server running on /tmp/tmux-33/default

我认为正在发生的事情是我的apache服务器正在建立其自己的tmux目录,因为该文件路径存在:/tmp/systemd-private-cf2b583fac384d89981b15c753c6b8bb-apache2.service-jpCxqB/tmp/tmux-33,这就是它的外观。

我非常确定它需要放在哪里/tmp/tmux-1001(其中有一个名为“默认”的文件),唯一的问题是我不知道该如何实现。

php apache server debian tmux
1个回答
0
投票

您可以通过-S或通过设置TMUX_TMPDIR,例如tmux -S/tmp/tmux-1001/default send-keys ...来更改套接字tmux对话。

但是,似乎它以UID 33的身份运行,因此除非您在套接字上授予其许可,否则它将无法与tmux服务器(UID 1001)进行通信。请注意,任何有权访问您的tmux套接字的用户都可以完全访问您的用户帐户,因此,与面向Internet的服务器进程使用相同的UID共享该帐户是不明智的。

一种更好的方法可能是使PHP代码创建一个两个用户都可以读取的临时文件(该目录必须是世界可写目录,或者最好是一个共享组拥有的目录),然后再包含一些内容。以检查该文件并执行所需操作的用户身份运行(即使它像第二个tmux窗口中的while :; do [ -f /tmp/csgo/mybutton ] && (rm /tmp/csgo/mybutton; tmux send-keys ...); sleep 1; done这样简单)。

© www.soinside.com 2019 - 2024. All rights reserved.