PHP 7.2 - Shell/Bash Script aufrufen?

  • Huhu Zusammen,


    aktuell werde ich von PHP an der Nase herumgeführt.


    Ich versuche via exec/shell_exec im Homeverzeichnis eines meiner unix-Users per PHP ein Bash-Script zu triggern (#!/bin/bash), genauer gesagt ist es ein Script um einen Minecraftserver zu starten, nachdem die Variablen dafür korrekt angepasst wurden.


    Der Code, der dabei ausgeführt wird, lautet wie folgt:



    Der sleep-Wert wurde von mir hinzugefügt, da das Script sonst fehlerhaft agiert, gerade bei einer Infitiy Instanz, aber das nur nebenbei.
    Fakt ist, dass er nicht in Zeile 9, sondern in Zeile 14 landet. Dies macht sich auch auf der Konsole mittels htop bemerkbar, weil einfach nichts startet.


    Ich habe schon verschiedenes versucht, aber gleich was ich versucht habe, es wollte einfach nicht.


    Hier mal dazu das aktuelle "Billigscript":


    PHP
    <?php
    $old_path=getcwd();
    chdir('/home/pfadzumskript/');*/
    $out=shell_exec("./minecraft4 start");
    chdir($old_path);
    echo '<pre>$out</pre>';

    Ich habe auch schon mit dem Spaß su -c "cd $DIR && $DIR/$SCRIPT start" - $USER - $PW gespielt, dieses Bashscript wiederum in das selbe Verzeichnis gepackt, mit 755 und auch 744 getestet, wie die zugehörige PHP-Datei, aber selbst damit totenstille.


    Auch habe ich das Script via cp kopiert und versucht, ausführen zu lassen => Nix!
    Via Symlink "kopiert" => Nix!


    Entweder mache ich irgendwas komplett falsch oder irgendwas läuft hier komplett falsch.


    Auf dem Server (Rootserver, kein vServer), läuft nginx mit PHP7.2-FPM und die Logs geben mir atm auch keine Auskunft, was mich doch sehr verwundert.


    Irgendwelche Vorschläge, wie ich den Mist zum laufen bekomme?

    Die ganze Welt ist ein Zoo und das darin befindliche Tier ist der Mensch.


    (Von mir selbst entwickelt)

  • Zuerst einmal scheint das Problem gar nicht an PHP zu liegen, denn wie du selbst sagtest, startet das Skript ja. Nur dort erhältst du nicht das richtige Ergebnis.


    Davon abgesehen: Was macht in Zeile 3 des PHP-Skripts das */? Ich sehe dort kein beginnendes /*.
    In Zeile 6 wird außerdem nur $out als Zeichenkette ausgegeben werden, nicht aber der Inhalt der Variable $out, da hierzu der String entweder verkettet ausgegeben werden müsste oder in doppelten Anführungszeichen.


    Funktioniert denn das Bash-Skript überhaupt, wenn du es manuell als derselbe Benutzer aufrufst, mit dem es auch über das PHP-Skript aufgerufen wird?