无法通过 php (shell_exec) 访问 tmux 会话

Unable to access tmux session through php (shell_exec)

我在 Ubuntu 服务器 18.04 上创建了一个 tmux 会话。为了让多个 linux 用户访问同一个会话,我遵循了这些 instructions. 当我尝试通过命令行从 "regular" 用户访问 tmux socket/session 时一切正常。

我正准备编写一个网站脚本,我想在该网站上启动或终止此会话。就像在上面提供的教程中一样,我将 www-data 用户添加到共享 tmux 套接字的组中。为了以超级用户身份通过​​ php 执行此 tmux 命令,我将此行 www-data ALL=NOPASSWD: /usr/bin/tmux 添加到 visudo 文件中。

当我想用 php(shell_exec) 终止已经 运行 的会话时,它说:

"no server running on watten_tmux_socket".

尽管我可以使用与 "regular" 用户相同的命令终止此会话。这里有什么问题吗?

sudo tmux -S /tmp/watten_tmux_socket kill-session -t WattenServer

编辑:在 php 上的套接字上启动会话也不起作用。在 /tmp 下没有创建会话和套接字,而在命令行中它可以工作。

好的,我做了一个解决方法。在 PHP 中使用 sudo 是非常不安全的,所以现在当我想在 php 上启动或终止一个新的 tmux 会话时,我修改了一个 txt 文件的内容(类似于 serverstate:on)。我安装了 incron apt-get install incron。在 incrontab 的帮助下,您可以在文件更改时注册一些排序事件。所以现在每当我修改这个文件的内容时,都会执行一个脚本来启动或终止 tmux 会话。

参考:Incron tutorial