PHP Shell | Command CD

  • Hallo!
    Ich bin aktuell dabei ein Hosting Panel zu Programmieren.
    Und ich frage mich wieso ich mit dem Change Directory Befehl nicht das Verzeichnis wechseln kann.
    Ich teste es damit, in dem ich die "samp03svr" Datei ausführen lasse!


    PHP
    system("cd /ss");
    system("./samp03svr");


    Sobald die Datei sich im gleichen Verzeichnis wie die "index.php" befindet, startet der Server.


    Ich hoffe ihr könnt mir Helfen!


    mfg :thumbup:

  • Ich gehe mal davon aus das PHP die Befehle die an system übergeben werden in ner subshell ausführt, das heißt beim zweiten system Aufruf biste wieder im Verzeichnis in dem der Befehl ausgeführt wird, und somit im falschen Verzeichnis.
    Wenn du das ganze als ein Befehl angibst, also z.b.


    PHP
    system("cd /ss;./samp03svr");


    Sollte es vielleicht funktionieren.

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Beitrag von Kasakow ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • break;


    Das break macht da ja mal gar keinen Sinn..schreibs mal so:


    PHP
    <?
        if(!empty($_GET["action"]))
        {
            if(!strcmp($_GET["action"],"starten")) system("cd /ss;./samp03svr");
            else if(!strcmp($_GET["action"],"stop")) system("kill `pgrep samp03svr`");
        }
    ?>


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Kaliber:


    So, jemand hat mir per PN weitergeholfen.
    $ServerPfad = "/var/www/sampstart/ss";
    <?
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    ?>


    <body>
    <?
    if(!empty($_GET["action"])){
    if($_GET["action"]=="start"){
    ssh2_exec($con, "cd ".$ServerPfad." && ./samp03svr");
    }
    else if($_GET["action"]=="stop"){
    ssh2_exec($con, "cd ".$ServerPfad." && kill `pgrep samp03svr`");
    }
    break;
    }
    ?>
    <br /><a href="index.php?action=start"><input type="button" value="Starten"></a>
    <a href="index.php?action=stop"><input type="button" value="Stoppen"></a>
    </body>


    Der Server startet und stoppt nun auch in anderen Ordnern.
    Aktuell lädt die Seite aber ewig lang....wieso?


    mfg :thumbup:

  • Ja, das wird laufen, bis zum Timeout laufen, da du den Server im Vordergrund startest und die Shell somit solange der Server läuft auf bleibt. Abhilfe schafft quasi alles, was den Prozess in den Hintergrund verfrachten kann: WM, Daemon, ...


    Normal ist allerdings nicht, dass es 10 Minuten läuft - da ist der Timeout definitiv zu hoch angesiedelt.

    Moderator der Bereiche: Coding, Vorstellungsrunde und Handelsecke. Über Verwarnungen, falls du zu den Wenigen gehörst, die eine Verwarnung von mir erhalten haben, kannst du jederzeit mit mir reden, sofern der Umgangston stimmt.


    expect us. / unkompetent. Das neue dynamisch. / easy-stripping.net - coming soon! / "9§. the entire website bestands out of english." / Vollprofi in allem, wo gibt und noch mehr; kann auch OOP.
    Kleine Coding-Frage? Schau doch in #dev im IRC vorbei, wir können dir sicher helfen.


    Ich bin für Aufträge im Bereich der Webentwicklung (z.B. User Control Panel) zu haben. Kontaktiere mich diesbezüglich einfach in einer privaten Nachricht mit deinen, möglichst konkreten, Vorstellungen.


    lesen.denken.posten. - [22:54:14] <Goldkiller2> früher gabs immer so coole user da stand in der signatur "lesen.denken.posten."


    Mafia 2 Multiplayer (m2mp.de) - Eine kostenlose Modifikation für Mafia 2, die es, ähnlich wie SAMP, erlaubt über das Internet oder LAN mit bis zu 1000 anderen Spielern zu spielen.

  • Ja, das wird laufen, bis zum Timeout laufen, da du den Server im Vordergrund startest und die Shell somit solange der Server läuft auf bleibt. Abhilfe schafft quasi alles, was den Prozess in den Hintergrund verfrachten kann: WM, Daemon, ...


    Normal ist allerdings nicht, dass es 10 Minuten läuft - da ist der Timeout definitiv zu hoch angesiedelt.


    Wie kann ich es denn im Hintergrund starten?


    mfg :thumbup:

    • Offizieller Beitrag

    screen wäre ne Möglichkeit, du vergibst einfach für jeden Server den du starten willst ne eigene Bezeichnung um den richtigen Screen zu erwischen und kannst den Server dann nacher ganz bequem wieder stoppen mit


    Code
    screen -S $bezeichnung -X stuff '^C'


    „Nicht das, was du nicht weißt, bringt dich in Schwierigkeiten, sondern dass, was du sicher zu wissen glaubst, obwohl es gar nicht wahr ist.“
    Mark Twain

    ---
    ICH BIN NUR HIER UM LEUTE ANZUSCHREIEN

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
    • Offizieller Beitrag

    mit dem von mir oben genannten Befehl sendest du sozusagen ein STRG+C in den Screen an den Server, welcher sich und den Screen dadurch beendet


    Nähere Infos zu screen kannst du in der Manpage nachlesen


    „Nicht das, was du nicht weißt, bringt dich in Schwierigkeiten, sondern dass, was du sicher zu wissen glaubst, obwohl es gar nicht wahr ist.“
    Mark Twain

    ---
    ICH BIN NUR HIER UM LEUTE ANZUSCHREIEN