[Gelöst] PHP header("Location:../index.php"); geht nicht nach exec('sudo /home/pi/tueralarm.py');

  • Moin, ich rätsel nun schon die ganze Zeit rum, aber ich komme nicht dahinter.

    Kurz gesagt, der Redirect nach index.php funktioniert nicht, wenn ich dieses Pythonprogramm aufrufe, aufgerufen wird es aber sehr wohl, aber der Ladekreis im Browser dreht sich unendlich lange.

    In tueralarm.py steht:

    Aber der Reihe nach, ich habe einen Apache2 mit PHP aufgesetzt, in /var/www/html liegt eine index.php , eine alarm_an.php und eine alarm_aus.php.

    In der index.php steht:

    Code
    <a href="alarm_an.php"><img src="bild_an.jpg" width="350" height="350"></img></a>
    <a href="alarm_aus.php"><img src="bild_aus.jpg" width="350" height="350"></img></a>

    In der alarm_an.php steht:

    PHP
    <?php
    exec('sudo /home/pi/tueralarm.py');
    header("Location:../index.php");
    ?>

    Wie geschrieben, es wird auch ausgeführt, nur dreht sich die runde Ladeuhr unendlich lange und nichts geht mehr, bis ich abbreche und die Seite neu lade.

    Wenn ich statt dem Pythonscript irgend ein anderes Programm aufrufe, funktioniert es wie es soll. Und ja, www-data darf sudo :baeh2:

    In der alarm_aus.php steht:

    PHP
    <?php
    exec('sudo pkill -f tueralarm.py &');
    header("Location:../index.php");
    ?>

    Da funktioniert alles wie gewünscht.

    Wieso nicht mit dem Pythonscript ?

    :helpnew:

    P.S. Ich habe auch schon versucht, das ganze in eine .sh zu packen, aber auch dann dreht sich der Kreis unendlich:

    Bash
    #!/bin/sh
    /usr/bin/sudo /usr/bin/python3 /home/pi/tueralarm.py &
    exit

    Ich habe auch schon ein & drangehängt, mit den Pfaden gespielt, aber es will einfach nicht.

    Gelöst, so funktionierts:

    PHP
    <?php
    exec('sudo /home/pi/tueralarm.sh > /dev/null 2>/dev/null &');
    header("Location:../index.php");
    ?>

    Ebenso mit .py:

    PHP
    <?php
    exec('sudo /home/pi/tueralarm.py > /dev/null 2>/dev/null &');
    header("Location:../index.php");
    ?>
  • [Gelöst] PHP header("Location:../index.php"); geht nicht nach exec('sudo /home/pi/tueralarm.py');? Schau mal ob du hier fündig wirst!

  • Da funktioniert alles wie gewünscht.

    Wieso nicht mit dem Pythonscript ?

    Gibt tueralarm.py irgendetwas aus?

    Das würde die header/location-Direktive unterbrechen, es darf nichts/keinerlei Output vor Setzen des Headers ausgegeben werden.

    Wenn du nichts zu sagen hast, sag einfach nichts.

Jetzt mitmachen!

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