【问题标题】:Start/Stop Minecraft Server with PHP使用 PHP 启动/停止 Minecraft 服务器
【发布时间】:2014-09-21 21:06:23
【问题描述】:

在过去的 10 个小时里,我一直在尝试找到一种方法来启动/停止与我的 php 脚本位于同一目录中的 craftbukkit.jar 文件。我已经尝试了几乎所有可以在 stackoverflow 上找到的解决方案,但都没有奏效。

我尝试了shell_exec("java -Xms1024M -Xmx1024M -jar craftbukkit.jar -o true");exec("java -Xms1024M -Xmx1024M -jar craftbukkit.jar -o true"); 我还尝试将java -Xms1024M -Xmx1024M -jar craftbukkit.jar -o true 放在外部start.sh 文件中,然后使用exec("start.sh") 运行它

我做错了什么?它应该在进程运行时创建所有 bukkit 配置文件(就像在计算机上运行它一样)

【问题讨论】:

  • 当你尝试这些不同的事情时会发生什么?您是否收到任何错误消息?您是否尝试过在运行java 之前手动更改到相应的目录?
  • 我绝对没有收到任何错误消息。你的第二个问题是什么意思?
  • 我的意思是你有没有试过先使用cd 或者给java一个jar文件的完整路径?您是否尝试过将标准输出和标准错误重定向到这些命令中的文件以查看您得到的结果?

标签: php shell jar minecraft bukkit


【解决方案1】:

我认为您需要一个控制台来运行服务器... 我会为服务器推荐一个屏幕会话:

要启动服务器,命令可能如下所示:

exec("screen -S bukkit sh /home/user/bukkit/start.sh")

-S 选项用于命名会话。 因此,例如,当您想通过 ssh 连接到控制台时,您只需这样做

screen -r bukkit

也许你应该对命令使用绝对路径...不 shure 是否更好

有一种方法可以向该会话发送一些命令来停止服务器......但我现在不记得了!

如果你不使用屏幕,你可以尝试

exec("killall screen")

杀死所有屏幕会话... 但要小心,因为服务器可能不会保存最近的更改(没有关闭 bukkit-server)

【讨论】:

  • 我可以将路径/home/user/bukkit/start.sh 更改为仅start.sh,因为它与脚本位于同一目录中吗?我正在共享主机上测试脚本,这可能是问题吗?
  • 我猜它可以与相对路径一起使用......但绝对路径更可靠
  • 这是我的 start.sh 文件:java -Xms512M -Xmx512M -jar craftbukkit.jar nogui 任何想法为什么它在通过 exec("screen -S bukkit sh start.sh"); 运行时不起作用
  • 试着把这个放到start.sh中: cd Bukkit java -Xms512M -Xmx512M -jar craftbukkit.jar nogui 然后使用ecec("screen -S bukkit sh start.sh")
  • cd Bukkit 是第一行,其余在第二行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-16
  • 2015-11-30
  • 1970-01-01
相关资源
最近更新 更多