Shell-Command mit PHP ausführen?

  • hi,
    ich möchte ein php-script machen, mit dem ich einen gameserver starten bzw. beenden kann.
    das passende shell-script habe ich bereits fertig, doch leider kann ich es nicht mit php starten...


    das error log sagt immer, dass es die datei nicht findet, obwohl sie vorhanden ist.


    wäre nett, wenn mir jemand ein paar tipps geben könnte, woran es liegen kann.


    mfg Steinle92

  • das shell script funktioniert ja...
    deshalb poste ich jetzt mal nur das php script und die zeile aus dem error log:


    php:

    PHP
    <?php
    $output = exec("samp.sh");
    echo $output;
    ?>

    error:

    Zitat

    sh: /samp.sh: No such file or directory

    das shell script heißt samp.sh und befindet sich im selben verzeichnis, wie das php-script.

  • ist das diese zeile hier?


    Zitat

    ; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
    magic_quotes_runtime = Off


    denn dann wäre es ja deaktiviert...

  • Was du meinst ist die Einstellung disable_functions. Da darf exec/shell_exec nicht stehen, sonst kann die Funktion nicht verwendet werden. Allerdings dürfte das hier nicht das Problem sein, denn wenn die Funktion deaktiviert ist, kommt sie nicht mal so weit zu prüfen, ob die Datei existiert.


    Wenn der absolute Pfad nicht funktioniert, weiß ich erstmal auch nicht weiter.. hat die Datei Ausführungsrechte für den PHP/Apache-Benutzer?

  • Häh? Sorry, wenn ich so provokant frage, aber hat überhaupt jemand seine Posts gelesen?

    Zitat

    sh: /samp.sh: No such file or directory

    Offensichtlich ist exec() nicht verboten, sonst würde sh sich sicherlich nicht melden.
    No such file or directory heißt weder, dass der Befehl verboten ist, noch, dass er "exec() oder shell_exec()" statt exec() nutzen soll (ich versteh den Sinn dieses Tips immer noch nicht, Hinco).


    So, jetzt mal btt:
    Es sagt, dass er das Script unter /samp.sh nicht findet.
    PHP wird nicht in dem Arbeitsverzeichnis aufgeführt, wo das Script liegt. Insofern musst du (wie auch bei reinen PHP-Scripts wie Foren und Co) den absoluten Pfad vom (ch)root aus angeben. Bei shell() muss für die Rückgabe übrigens eine Variable mitgegeben werden, die dann als Array(!) definiert wird.
    Es heißt also:

    Mein Server:
    v(olks)Server 1. Serie: 2,5GHz, 1024MB RAM, 1024MB Swap, 2x60GB-Raid1-HDD, Traffic-Flat
    Node:
    78.46.117.9x | hos-tr2.ex3k4.rz7.hetzner.de

  • Artimis: das von dir gepostete script erzeugt leider nur eine fehlermeldung:

    Zitat


    Warning: shell_exec() [function.shell-exec]: Cannot execute using backquotes in Safe Mode in /var/kunden/webs/gtapage/sonstiges/test.php on line 2
    oder


    dieses "oder" steht da wirklich drin^^ ist also nicht ausversehen.

  • soviel ich weiß, hab ich den schon ausgestellt^^


    aber ich schau mal nochmal


    //edit: hmm ich weiß nicht warum, aber der safe_mode war doch noch an^^
    jetzt hab ich ihn ausgemacht und apache neu gestartet.
    der error ist weg, aber ich bekomme nur "oder" ausgegeben und der server startet nicht...


    //edit2: achso hab das "oder" im script übersehen. das steht da sozusagen als kommentar drin^^

  • Zitat

    //edit2: achso hab das "oder" im script übersehen. das steht da sozusagen als kommentar drin^^

    Bitte NIEMALS! Codes einfach, ohne sie vorher durchzusehen und zu verstehen, auf dem Server ausführen. Sonst kannst du uns gleich deine SSH-Daten posten und wir "machen das für dich".


    Also funzt es jetzt?

    Mein Server:
    v(olks)Server 1. Serie: 2,5GHz, 1024MB RAM, 1024MB Swap, 2x60GB-Raid1-HDD, Traffic-Flat
    Node:
    78.46.117.9x | hos-tr2.ex3k4.rz7.hetzner.de