PHP header Weiterleitung zu einem anderen IP (Zweiter Raspberry)

  • Hallo Zuammen!

    Ich benötige mal wieder euer Wissen!

    Ich habe 2 Raspberry Pi 4, einen in der Garage und einen in der Wohnung, Auf beiden ist Apache, PHP, MYSQL installiert. Meine Zentrale Homepage läuft auf dem Raspi in der Wohnung. Ich möchte über den Raspi in der Wohnung die GPIOs des Garagen Raspi steuern.
    Das funktioniert auch, indem ich auf dem Garagen Raspi die PHP Seiten aufrufe, die dann wieder die sh-Dateien ausführen um die GPIOs zu schalten.
    Mein Problem ist, das die Weiterleitung des php headers auf dem Garagen Raspi nicht funktionert!

    Ich möchte das eine Seite des Raspi in der Wohnung aufgerufen wird, nachdem die GPIOs geschaltet haben!

    In der PHP Datei steht folgendes

    PHP
    <?php
    // Schaltet das Netzteil ein
    shell_exec ('/var/www/html/garage/heizungpwr1.sh');
    // nach dem Befehl wird diese Seite angezeigt
    header ("Location:http://192.168.178.88/garage/garage.php");
    ?>

    Nach dem schalten der GPIOs versucht er aber folgende Seite aufzurufen!
    http://192.168.178.28/192.168.178.88/garage/garage.php

    Er stellt also die eigene IP des Garagen Raspi vor der eigentlich IP die er aufrufen soll!
    Meine Frage ist nun warum und wie bekomme ich es hin, das nur die IP in der PHP Datei aufgerufen wird?
    Vielen Dank!

    Gruß Stephan

  • PHP header Weiterleitung zu einem anderen IP (Zweiter Raspberry)? Schau mal ob du hier fündig wirst!

  • header ("Location:http://192.168.178.88/garage/garage.php");
    ?>

    wie schon @hyle angermerkt hat, ein Leerzeichen zwischen Location: und http://

    Code
    header ("Location: http://192.168.178.88/garage/garage.php"); 

    dann sollte noch ein exit; danach stehen. Unabhängig davon, ob das Script nicht sowie endet oder nicht.

    Code
    header ("Location: http://192.168.178.88/garage/garage.php"); 
    exit;
    ?>

    https://www.php.net/manual/en/function.header.php

    Das abschließende ?> ist eigentlich nicht nötig und wird nicht mehr empfohlen. Ich mach es zwar immer noch, aber man erspart sich ggf. Probleme, wenn man ?> am ende des PHP-Script einfach weg läßt, sofern es sich um ein reines PHP-Script handelt.

    EDIT

    Noch besser ist diese Variante

    Code
    // Wenn keine Header gesendet wurden, sende einen
    if (!headers_sent()) {
        header ("Location: http://192.168.178.88/garage/garage.php");
        exit;
    }

    https://www.php.net/manual/de/function.headers-sent.php

    Grüße

    Thomas

    Macht immer erst mal alles falsch und tritt in jedes Fettnäpfchen...

    2 Mal editiert, zuletzt von thomas_w (11. Mai 2020 um 17:29)

Jetzt mitmachen!

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