2014-09-21 51 views
0

在過去的10個小時中,我一直在試圖找到一種方法來啓動/停止與我的php腳本位於同一目錄中的craftbukkit.jar文件。我已經嘗試了幾乎所有可以在stackoverflow上找到的解決方案,但都沒有工作。開始/停止使用PHP的Minecraft服務器

我都嘗試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配置文件時運行的進程(就像它會在你的計算機上運行時一樣)

+1

當你嘗試各種各樣的事情時發生了什麼?你是否收到任何錯誤訊息?在運行'java'之前,您是否嘗試過手動更改到相應的目錄? – 2014-09-21 21:13:11

+0

我收到絕對沒有錯誤消息。你的第二個問題是什麼意思? – Exwolf 2014-09-21 21:14:00

+0

我的意思是你有沒有嘗試過首先使用'cd'或者給java提供一個jar文件的完整路徑?您是否曾嘗試將標準輸出和標準錯誤重定向到這些命令中的文件以查看您得到的內容? – 2014-09-21 21:21:53

回答

1

我認爲你需要一個控制檯來運行服務器... 我會reccomend屏幕會話服務器:

要啓動服務器的命令看起來是這樣的:

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

-s選項命名會話。 所以,當你想通過ssh例如連接到控制檯,你根本就

screen -r bukkit 

也許你應該使用絕對路徑的命令......如果它好還是不

有一個不舒爾方式發送一些命令到該會話來停止服務器以及...但我現在不記得了!

,如果你不使用屏幕不便其他你可以嘗試

exec("killall screen") 

殺死所有screensessions ... 但要小心,由於服務器可能無法保存最近的變化(沒有bukkit停機-server)

+0

我可以將路徑'/ home/user/bukkit/start.sh'改爲'start.sh',因爲它與腳本位於同一目錄嗎?我正在共享主機上測試腳本,這可能是問題嗎? – Exwolf 2014-09-21 21:22:20

+0

我想它可以用相對路徑工作......但絕對路徑更容易解除 – V55 2014-09-21 21:24:10

+0

這是我的start.sh文件:'java -Xms512M -Xmx512M -jar craftbukkit.jar nogui'任何想法爲什麼在運行時不起作用通過'exec(「screen -S bukkit sh start.sh」);' – Exwolf 2014-09-21 21:29:19