我已经设置了一个网页,允许我远程执行我用来启动我的Minecraft服务器的bat文件,以防我想在外出时玩。我已成功设法运行bat文件并从我的站点远程启动服务器,但是在服务器(我的桌面)上没有可视命令显示命令提示符,因为通常运行bat文件时。因此,我不知道停止服务器的好方法。
当使用PHP远程运行bat文件时,有没有办法让命令提示符显示在服务器上?是否有人知道任何简单方式,我可以通过网站在服务器上运行命令,就像我使用命令提示符一样?
我的网站使用wamp(apache)在与服务器相同的桌面上运行,我将目录更改为bat文件的位置,并且能够执行它。
这是我的网站代码:
<?php
if (isset($_POST['button']))
{
echo getcwd() . "\n";
chdir('C:\wamp\www\MinecraftServer');
exec('server.bat', $output);
echo implode("\n", $output);
}
?>
<!doctype http>
<html>
<head>
<title> Index </title>
<style>
body {background-color: GREENYELLOW}
</style>
</head>
<body>
<h1> Welcome! </h1>
<h2> Are you here looking for the minecraft map? Click <a href="./WorldMap/map.html"> here </a>.</h2>
<form method="post">
<p>
<button name="button">Start Server</button>
</p>
</form>
</body>
</html>
Bat文件:
"C:\Program Files\Java\jdk1.7.0_10\bin\java.exe" -Xmx4096M -Xms2048M -jar minecraft_server.1.8.exe nogui
pause
答案 0 :(得分:0)
<br/>
标记,因此您的回显应如下所示:
echo nl2br(implode("\n", $output));
要么
echo implode("<br/>", $output);
您的HTML标记中标记错误,将http
更改为html
您是否只尝试过反斜杠?
@ECHO OFF
以防止输出混乱答案 1 :(得分:0)
popen函数可以帮助你,它通过分叉命令给出的命令打开一个进程的管道。
POPEN
(PHP 4,PHP 5)popen - 打开进程文件指针
描述
resource popen ( string $command , string $mode )
打开通过分叉命令执行的命令执行的进程的管道。
参数
命令命令
模式
返回值
返回与fopen()返回的文件指针相同的文件指针,除外 它是单向的(可能只用于阅读或写作) 并且必须使用pclose()关闭。该指针可以与。一起使用 fgets(),fgetss()和fwrite()。当模式为&#39; r&#39;时,返回 当模式为时,文件指针等于命令的STDOUT &#39; w&#39;,返回的文件指针等于命令的STDIN。
如果发生错误,则返回FALSE。