apache — PHP при выполнении окна командной строки отображения файла bat на сервере?

Я настроил веб-страницу, которая позволит мне удаленно запускать файл 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

0

Решение

  • Можете ли вы поделиться своими .летучая мышь? Может быть, это просто не производит никакого выхода?
  • Можете ли вы var_dump $ выходной? Когда массив пуст, независимо от того, что клей, взрываться будет выводить пустую строку, насколько я помню.
  • Если вы хотите сделать новые строки в браузере, вы должны использовать <br/> тег, так что ваше эхо должно выглядеть так:
    echo nl2br(implode("\n", $output));
    или же
    echo implode("<br/>", $output);
  • И у вас есть неправильный тег в разметке HTML, измените http в html

  • Вы пробовали только backicks?

  • Вы можете рассмотреть вывод результатов выполнения .летучая мышь в некоторый текстовый файл, а затем прочитайте содержимое этого файла.
  • использование @ECHO OFF в вашем .летучая мышь чтобы не загромождать вывод
0

Другие решения

POPEN Функция может помочь вам, она открывает канал для процесса, выполняемого путем разветвления команды, заданной командой.

От Документация:

POPEN

(PHP 4, PHP 5) popen — открывает указатель файла процесса

Описание

resource popen ( string $command , string $mode )

Открывает канал для процесса, выполняемого путем разветвления команды, данной командой.

параметры

команда Команда

режим Режим

Возвращаемые значения

Возвращает указатель файла, идентичный возвращенному fopen (), кроме
что он однонаправлен (может использоваться только для чтения или записи)
и должен быть закрыт с помощью pclose (). Этот указатель может использоваться с
fgets (), fgetss () и fwrite (). Когда режим «г», возвращаемый
указатель файла равен STDOUT команды, когда режим
‘w’, возвращенный файловый указатель равен STDIN команды.

Если возникает ошибка, возвращает FALSE.

0

По вопросам рекламы [email protected]