[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");
    ?>
  • fred0815

    Changed the title of the thread from “PHP header("Location:../index.php"); geht nicht nach exec('sudo /home/pi/tueralarm.py');” to “[Gelöst] PHP header("Location:../index.php"); geht nicht nach exec('sudo /home/pi/tueralarm.py');”.
  • 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.

    Menschen die keine Ironie verstehen finde ich super!