PHP soll .bat Datei starten! [Windows Root Server]

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • PHP soll .bat Datei starten! [Windows Root Server]

    Anzeige
    Ich stelle diese Frage für einen Freund, ich versuche die Antworten trotzdem so präzise wie möglich zu halten.


    Guten Tag,

    Bevor ich zum Problem komme beschreib ich kurz den Sachverhalt:

    Ich besitze einen Windows Root Server mit Windows 8.1 als Software.

    Meiner Meinung nach spielen die Hardware Daten bei meinem Anliegen keine Rolle.

    Derzeit laufen auf dem Root Server 4 kleine Minecraft Server.

    Mein Problem ist nun folgendes:

    Die Owner der MC-Server haben nur FTP Zugriff, allerdings nicht auf die
    Console... somit können sie den Server nicht restarten, dies muss immer
    ich übernehmen.

    Da ich Webdesigner bin habe ich vor eine simple Page für die Owner zu
    gestalten mit Login System, nach dem einloggen sollen sie ihren Server
    per Knopfdruck über das Webinterface starten und stoppen können.

    Die Website und das Login-System sind schon fertig! Das Start- und
    Stopscript für die Minecraft Server bekommen ich aber nicht hin!

    Und genau das ist mein Problem:

    Ich möchte das eine PHP Datei per Knopfdruck eine .bat Datei auf dem
    Root Server starten, sodass sich die Console des Server auf dem Root
    Server öffnet (also nicht auf der Website). Das gleiche auch für das
    stoppen bzw. neustarten des Servers.

    Ich hoffe doch es ist alles verständlich, falls nicht einfach Fragen!

    Ich bin über jede Antwort dankbar, hoffentlich kennt jemand die Lösung des Problems
    Kanalrestart
  • Wie wäre es mit

    if (false==$givenstring)
    die ('no shell command given');

    if (eregi("(windows|winnt)", $_SERVER['SystemRoot'])) {

    $cmd = $givenstring;
    $output = ' echo hallo >> c:\echo.txt';

    exec('start "window_name_optional" "'.$cmd.'"',$output,$return);
    echo $return;
    } else {
    echo $givenstring;
    }
  • vantezzen schrieb:

    Wie wäre es mit

    if (false==$givenstring)
    die ('no shell command given');

    if (eregi("(windows|winnt)", $_SERVER['SystemRoot'])) {

    $cmd = $givenstring;
    $output = ' echo hallo >> c:\echo.txt';

    exec('start "window_name_optional" "'.$cmd.'"',$output,$return);
    echo $return;
    } else {
    echo $givenstring;
    }


    Kannst du die einzelnen Variablen bitte noch beschreiben? ^^
    Kanalrestart
  • Anzeige
    @vantezzen Der Forenbeitrag, aus dem Du da (ohne Quellenangabe übrigens) kopierst, ist aus dem Jahr 2005 ... eregi z.B. ist längst deprecated. Abgesehen davon ist der von Dir gepostete Code so weder lauffähig noch besonders sinnvoll.

    Die Lösung mit exec() sollte prinzipiell funktionieren, ich kann aber nicht sagen ob das unter Windows in diesem Fall so funktionieren würde. Unter Linux läuft der Webserver (bzw. PHP) unter einem eigenen Benutzer, der nicht mal eben nen Minecraft-Server auf diese Weise starten kann. Davon abgesehen ist es eh nicht sehr sicher, exec() generell zu erlauben.
    Ich habe sowas schonmal über einen TCP-Server gelöst, der dann auf dem Server lief und Kommandos von einer Start-Stop-Seite entgegennahm. Aber ich meine für Minecraft gibt es eine einfachere Lösung über ein Programm namens remote toolkit oder so. Ist leider schon was länger her dass ich das gemacht habe, vielleicht kannst Du damit aber etwas anfangen, sollte die Lösung mit exec nicht funktionieren.