通过PHP Exec()或类似函数启动Minecraft_Server.jar

时间:2012-11-23 03:22:43

标签: java php jar amazon-ec2 minecraft

我正在尝试构建一个启动minecraft_server.jar的脚本(位置:用户目录/ mineserver / minecraft_server.jar)。

我安装了PHP和Apache,我正在尝试从/var/www/html/interface.php启动服务器JAR。

通过控制台,运行服务器启动正常:

java -Xmx1024M -Xms1024M -jar mineserver/minecraft_server.jar nogui

...来自用户目录。因此,在interface.php文件中,我有以下内容(请注意上面列出的位置):

system('java -Xmx1024M -Xms1024M -jar /home/ec2-user/mineserver/minecraft_server.jar nogui', $retval);

但是我访问该文件后服务器永远不会启动。我究竟做错了什么?

感谢您提供任何线索。

我想感谢你在感恩节的帮助。虽然我还没有找到解决方案,但我很欣赏这些努力。再次感谢。

2 个答案:

答案 0 :(得分:2)

您检查过错误日志吗?它默认为/var/log/httpd。如果出现任何问题,应该在那里。否则,它可能会出错,我建议在screen中启动它,这样你就可以跳进来检查它正在做的事情。

通过您的发行版使用的任何方法安装screen,然后将启动字符串更改为:
screen -dmS "minecraft" java -Xmx1024M -Xms1024M -jar /home/ec2-user/mineserver/minecraft_server.jar nogui

答案 1 :(得分:2)

该命令将使用权限以及Web服务器运行的任何用户帐户的环境执行。

特别是,它可能有一个不同的PATH条目,甚至可能找不到java命令,或者可能在其他地方找到它等等......

另外,请注意它从PHP脚本继承的当前工作目录。

请参阅exec()并检查输出以帮助您自己进行一些基本的调试。

另外,你可能想要更像

的东西
exec('nohup java etc... > /dev/null 2>&1 &');

以便进程正确地进行后台处理并与Web服务器父进程断开连接。