RasPi - shell skript mit php starten/ausführen

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo

    ich will mit Apache2 und PHP 5.4 ein Shell-Skript per exec Befehl ausführen.

    Bisher habe ich es hinbekommen, dass das Shell-Skript ausgeführt wird, wenn es im selben Ordner liegt wie die PHP-Datei.

    PHP
    <?php
    $output = array();
    $return_var = 0;
    exec('./skript.sh', $output, $return_var);
    echo $return_var;
    ?>


    Der Fehlercode hier ist 0.


    Hier ein paar Alternativen (exec-Befehl) mit Fehlercodes:

    Code
    exec('./Ordner/Ordner/skript.sh', $output, $return_var);


    Fehlercode: 4 (hier finde ich keine Informationen darüber)

    Code
    exec('./../Ordner/Ordner/skript.sh', $output, $return_var);


    Fehlercode: 4 (hier finde ich keine Informationen darüber)


    Weiß irgendjemand, was ich tun kann um das Skript mit einer PHP-Datei aus einem anderen Ordner zu starten?


    Edit:

    Habe es gerade mit dem kompletten Dateipfad Probiert, geht aber ebenfalls nicht!

    Code
    exec('/var/www/Ordner/Ordner/skript.sh', $output, $return_var);


    Fehlercode: 4

    Einmal editiert, zuletzt von PCheute (10. September 2013 um 10:08)

  • Wem gehört das Script denn?


    Normal kannst du auch ins error.log vom apache2 gucken was genau der fehler ist:

    Code
    cat /var/log/apache2/error.log
  • Dieses Verzeichnis und diese Datei wurden vorher vom Benutzer "www-data" angelegt (per PHP).
    Also müsste der Benutzer ja die Rechte haben.

    Hier mal die Rechte der sh-Datei:
    -rwxrwxrwx 1 www-data www-data

    Also hier sollten alle Rechte vergeben sein.


    Der Ordner hat folgende Rechte:
    drwxrwxrwx 2 www-data www-data

    Ich denke hier wird es auch keinen Fehler geben.

  • Wie sieht denn dein Script aus? (bitte vollständig in Kode posten)


    Ich versuch das mal nachzustellen:

    Spoiler anzeigen


    Das bash Script: ( /tmp/test.sh )

    Bash
    #!/bin/bash
    echo "Testscript ausgefuehrt"

    Das php Script: ( /var/www/test.php )

    PHP
    <?php
    $output = array();
    $return_var = 0;
    exec('./tmp/test.sh', $output, $return_var);
    echo "output: $output[0]<br/>\n";
    echo "return_var: $return_var<br/>\n";
    ?>

    1. Aufruf des php Scripts:
    output:
    return_var: 127

    bash Script ausführbar gemacht: chmod +x /tmp/test.sh
    Besitzer des bash Scripts geprüft: -rwxr-xr-x 1 root root 44 Sep 10 10:41 /tmp/test.sh

    2. Aufruf des php Scripts:
    output:
    return_var: 127

    php Script abgeändert:

    Code
    exec('./tmp/test.sh', $output, $return_var);

    geändert in:

    Code
    exec('/tmp/test.sh', $output, $return_var);

    3. Aufruf des php Scripts:
    output: Testscript ausgefuehrt
    return_var: 0


    Wieso bei dir aber als return_var 4 raus kommt weiss ich nicht...
    Auf jedenfall machte der Punkt ( . ) vor dem Pfad zum Script Probleme - den muss man hier nicht angeben da exec das ja bereits ausführt - über die Konsole muss man nur " ./ " angeben wenn man etwas im aktuellen Verzeichnis ausführen will, ansonsten gibt man entweder den vollständigen Pfad an oder das Script liegt in einem Verzeichnis das in $PATH hinterlegt is dann kann man sich " ./ " auch sparen

    Nutze am besten immer den vollständigen Pfad

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!