运行bash脚本,该脚本从php中的特定用户启动屏幕


Run a bash script, which starts a screen from a specific user in php

我已经深入研究了从PHP启动屏幕这一主题的所有内容。我正在启动一个游戏服务器,所以我必须从特定的用户那里运行它,以便服务器可执行文件在正确的文件夹中查找其他文件。我已经将Apache的用户从默认用户更改为必须运行服务器的用户。当我有exec('cd /User/FolderWithScript && bash script.sh);来模拟启动它时,它不会在/var/log/apache2/error.log中报告任何错误,也不会启动服务器或其屏幕。

如果我使用exec('cd /User/FolderWithExecutable && screen -dmS ServerExcutable +Args');,也会发生同样的事情,这基本上就是脚本所做的。

如果我使用exec(cd /User/FolderWithScript && bash ServerExcutable +Args);,它会在/var/log/apache2/error.log中为服务器吐出所有常见的东西,但不幸的是,它似乎也在错误的目录中查找大多数游戏文件,这些文件位于/User/.game.中

谢谢!

我必须添加到我的sudoers文件www-data ALL=(ALL) NOPASSWD: /Path/To/Script中,然后在PHP中运行exec('cd /Path/To/Script(AndExecutable) && sudo -u User /Path/To/Script);。基本上,除非我从可执行文件所在的文件夹中运行脚本,否则它不会正确运行。除非我使用sudoers文件中输入的整个脚本路径,否则它也不会运行。