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

时间:2018-09-23 00:03:26

标签: php ubuntu tmux

我在Ubuntu Server 18.04上创建了一个tmux会话。为了使多个Linux用户可以访问同一会话,我遵循了以下步骤 instructions.当我尝试通过命令行从“常规”用户访问tmux套接字/会话时,一切正常。

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

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

  

“没有服务器在watten_tmux_socket上运行”。

尽管我可以使用与“常规”用户相同的命令取消此会话。怎么了?

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

编辑:通过php在套接字上启动会话也不起作用。在/ tmp下不会创建任何会话,也不会创建套接字,而在命令行中则有效。

1 个答案:

答案 0 :(得分:1)

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

参考:Incron tutorial