使用 PHP exec 执行 Minecraft 命令

Use PHP exec to execute Minecraft command

我正在创建我自己的小网站来管理 Minecraft 服务器作为一个有趣的项目。现在我需要完成的是能够将命令发送到服务器所在的屏幕 运行ning.

我的处理方法如下:

<?php
if (isset($_POST['startbutton']))
    {
        exec('sudo screen -S 23971 -X stuff "say hello^M"');
    }
?>

    
<form method="post">
    <button type="submit" name="startbutton">Test</button>
</form>

现在,当我在终端本身执行它时,该命令行工作正常,但是当我尝试通过网站 运行 它时,没有任何反应。 如果我只是尝试执行

if (isset($_POST['startbutton']))
    {
        echo exec('whoami');
    }
?>

它也很好用。我不知道我做错了什么。

我真的不确定,但试试看:

<?php
if (isset($_POST['startbutton']))
    {
        exec('sudo screen -S 23971 -X stuff "say hello^M"');
        exec('YOUR SUDO PSW');
    }
?>


<form method="post" action="YOUR PHP PAGE LIKE server.php">
    <button type="submit" name="startbutton">Test</button>
</form>

让我知道它是否有效

您似乎正在尝试执行需要超级用户权限的命令。在大多数设置中,PHP 在网络服务器用户下运行,它没有这些权限。您还应该记住,授予超级用户权限 PHP 是一种安全风险。

我的建议是有一个专门的服务,负责执行那些 shell 命令。然后,您可以从 PHP 脚本中调用该服务而无需 sudo。

检查这些细节:

首先:感谢大家的支持。 我做了一些进一步的研究并找到了解决我的问题的方法:

我创建了一个新用户,然后我授予了 /var/www 的所有权。 然后我将 apache2 用户从 www-data 更改为新用户。 现在我只需要以新用户身份使用 minecraft 服务器启动屏幕,这样我就可以从 php 访问这个屏幕,并且我能够让它工作而无需授予任何用户完全 root 权限或任何东西。