无法从PHP脚本在Linux的“屏幕”中执行命令

时间:2012-01-13 09:21:01

标签: php command-line-interface gnu-screen shell-exec minecraft

背景:我正在为VPS上的朋友运行Minecraft服务器,我正在尝试使用PHP为它创建一种“状态网页”。这是我试图实施的最后一件事;我有一个服务器上/下指示器,在线时间等。

我遇到问题的脚本是显示播放器列表。理想情况下,我希望能够做的是显示在我的服务器上播放的人的名字列表,以及离线的人的蓝色和蓝色的在线人员。

现在我遇到问题的部分是:

minecraft服务器jar文件在'screen'中执行,标记为minecraft。要获得在线玩家列表,我应该能够执行(在屏幕上)“列表”,然后输入,并且它会显示一个玩家列表。

我尝试了许多不同的方法在PHP的屏幕上执行命令,例如:

$online = shell_exec('screen -S minecraft -X  print "list\r"');
    echo "<pre>Players online: $online";

结果总是在网页上回显

Players online: No screen session found.

我做错了什么?我的PHP很糟糕(我从来没有学过PHP,而且我正在学习直接参考),但这看起来很简单?

另一方面,实现动态突出显示的字符列表的最佳方法是什么?一系列角色扮演,爆炸()和比较,或者我应该写入数据库并进行比较?

先谢谢大家。

PS:作为参考,网站位于http://fudgesminecraftserver.info,您可以看到正在发生的事情。

1 个答案:

答案 0 :(得分:0)

这很可能是Linux权限问题。您需要为运行Apache(www-data?)的用户授予执行命令'screen'

的权限