Я настроил веб-страницу, которая позволит мне удаленно запускать файл bat, который я использую для запуска своего сервера Minecraft, если я захочу поиграть. Мне удалось запустить файл bat и запустить сервер удаленно с моего сайта, однако на сервере (Мой рабочий стол) визуальное отображение командной строки отсутствует, как это обычно происходит при нормальном запуске файла bat. Из-за этого я не знаю хорошего способа остановить мой сервер.
Есть ли способ заставить командную строку отображаться на сервере, когда файл bat запускается удаленно с помощью PHP? Кто-нибудь знает о каких-либо просто каким образом я могу запускать команды на сервере через веб-сайт, как если бы я использовал командную строку?
Мой веб-сайт запускается с использованием 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>
Файл летучей мыши:
"C:\Program Files\Java\jdk1.7.0_10\bin\java.exe" -Xmx4096M -Xms2048M -jar minecraft_server.1.8.exe nogui
pause
<br/>
тег, так что ваше эхо должно выглядеть так:echo nl2br(implode("\n", $output));
echo implode("<br/>", $output);
И у вас есть неправильный тег в разметке HTML, измените http
в html
Вы пробовали только backicks?
@ECHO OFF
в вашем .летучая мышь чтобы не загромождать выводPOPEN Функция может помочь вам, она открывает канал для процесса, выполняемого путем разветвления команды, заданной командой.
От Документация:
POPEN
(PHP 4, PHP 5) popen — открывает указатель файла процесса
Описание
resource popen ( string $command , string $mode )
Открывает канал для процесса, выполняемого путем разветвления команды, данной командой.
параметры
команда Команда
режим Режим
Возвращаемые значения
Возвращает указатель файла, идентичный возвращенному fopen (), кроме
что он однонаправлен (может использоваться только для чтения или записи)
и должен быть закрыт с помощью pclose (). Этот указатель может использоваться с
fgets (), fgetss () и fwrite (). Когда режим «г», возвращаемый
указатель файла равен STDOUT команды, когда режим
‘w’, возвращенный файловый указатель равен STDIN команды.Если возникает ошибка, возвращает FALSE.