Ankündigung

Einklappen
Keine Ankündigung bisher.

Offline @get_header und iframe

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Offline @get_header und iframe

    Hallo leute ich habe ein sehr großes Problem:

    Ich habe ein Asus Tinker Board mit linaro am laufen.
    Darauf läuft mySQL, php, usw.
    Zudem ist darauf ein Joomla installiert.
    Ich habe nun folgenden Code auf meiner Startseite:
    PHP-Code:
    <?php
              
    //Funktion deklarieren
        
    function url_check11($url) {
            
    $hdrs = @get_headers($url);
            return 
    is_array($hdrs) ? preg_match('/^HTTP\\/\\d+\\.\\d+\\s+2\\d\\d\\s+.*$/',$hdrs[0]) : false;
        };



        
    //URL pruefen
      
    if(url_check11('http://192.168.2.21/index.php/wb1')){
            
    //URL gueltig
            
    $x11"1";
        } else {
            
    //URL ungueltig
             
    $x11"0";
        };

      
    //Funktion deklarieren
        
    function url_check1($url) {
            
    $hdrs = @get_headers($url);
            return 
    is_array($hdrs) ? preg_match('/^HTTP\\/\\d+\\.\\d+\\s+2\\d\\d\\s+.*$/',$hdrs[0]) : false;
        };



        
    //URL pruefen
      
    if(url_check1('http://192.168.2.21:8101')){
            
    //URL gueltig
            
    $x1"1";
        } else {
            
    //URL ungueltig
             
    $x1"0";
        };

    if(
    $x1 == "1" AND $x11 == "1")
    {
            echo 
    '<iframe width="410" height="300" scrolling="no" frameBorder="0" src="http://192.168.2.21:8101"></iframe>';
     }elseif (
    $x1 == "0" AND $x11 == "1"){
     echo 
    '<iframe width="410" height="300" scrolling="no" frameBorder="0" src="http://192.168.2.21/offline.txt"></iframe>';
     };

    ?>
    Solange das Asus Board über die FritzBox in das Internet kann, funktioniert alles wie vorgestellt.
    Er fragt ab ob die seite 192.168.2.21:8101 verfügbar ist und fragt ab ob die seite 192.168.2.21/index.php/wb1 verfügbar ist.
    Beide seiten liegen local - die 192.168.2.21 ist das Asus Board selbst.

    Sobald ich aber die FritzBox vom Netz nehme geht nichts mehr. Obwohl sich beide Seiten direkt aufrufen lassen.

    Auf einer anderen Seite habe ich nur ein iframe eingebunden:

    HTML-Code:
    <iframe width="410" height="300" scrolling="no" frameBorder="0" src="http://192.168.2.21:8101"></iframe>
    Dort wird das iframe auch angezeigt, aber wenn sich etwas im iframe ändert wird es nicht aktualisiert.
    Wenn die FritzBox und somit der Asus online ist schon.

    Ich bin am verzweifeln und stehe unter enormen Zeitdruck. Bitte unbedingt um Hilfe.

    Vielen Dank!

    PS: Seite muss offline Funktionieren. Sie dient zur Visualisierung einer bzw. mehrerer Maschinen. Manche Anlagen haben keine Netzwerkanbindung sondern hier liegt nur der ASUS zusammen mit der SPS auf einen Switch.


  • #2
    Das ist wohl weniger ein PHP als ein Netzwerkproblem. Ohne Netzwerk kannst du nun mal nicht per src="http://192.168.2.21:8101" irgendwas holen. Was ist die "andere Seite", dein Client ?
    Hat dieser wenigstens eine fixe IP im selben Netzwerksegment wenn du schon kein Router hast?
    PHP-Klassen auf github

    Kommentar


    • #3
      MOD: Verschoben von PHP-Fortgeschritten
      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        Hallo Jspit,
        Wieso sollte kein Netzwerk existieren?
        Es befindet sich im Netzwerk:
        SPS 1 - 192.168.2.11
        SPS 1 - 192.168.2.12
        SPS 1 - 192.168.2.13
        Asus 1 (Mit Touchscreen) - 192.168.2.22
        Asus 2 (als Server) - 192.168.2.21
        PC - 192.168.2.50
        Fritzbox- 192.168.2.1

        Alle Fixe IP alle 255.255.255.0 Sub und alle 192.168.2.1 als Standardgateway.

        Auf Asus 1 läuft Android mit der Fully Kiosk Browser App.
        Auf Asus 2 läuft PHP, MySQL, Joomla, SPS Dienste (Port 8101,8102,8103,8111,8112 und 8113).

        Alle Seiten auf dem Asus 2 können vom PC als auch vom Asus 1 auaufgerufen werden
        192.168.2.21:8101 - SPS Dienst 1
        192.168.2.21:8111 - SPS Admin 1
        192.168.2.21:8102 - SPS Dienst 2
        ....
        192.168.2.21/Index.php

        Funktioniert ALLES offline beim direkten Aufruf.
        Funktioniert ALLES offline im iframe nur eben ohne das es sich automatisch aktualisiert .
        Auch fragen einigen Shell Scripts welche auf dem Asus 2 liegen via wget Schaltzustände der SPS ab und schalten GPIOs. Und andere Scrips rufen via cUrl links des rest-dienstes auf und ändern somit Werte in der SPS.
        Das alles funktioniert. Nur scheint er beim im StartThread gelisteten Scripts mit @get_header.. ein false zu ermitteln Ob wohl die Webseite ja erreichbar ist.

        Wenn es also ein Netzwerkproblem wäre, wäre ich echt froh. Was könnte ich den dann übersehen haben?
        Welche Infos benötigt ihr für die Fehleranalyse?

        Vielen Dank.

        Kommentar


        • #5
          Zitat von rehGum Beitrag anzeigen
          Funktioniert ALLES offline im iframe nur eben ohne das es sich automatisch aktualisiert .
          Aktualisiert sich denn die Seite, die du im iFrame hast automatisch? Wenn ja wie tut sie das?

          Zitat von rehGum Beitrag anzeigen
          Das alles funktioniert. Nur scheint er beim im StartThread gelisteten Scripts mit @get_header.. ein false zu ermitteln Ob wohl die Webseite ja erreichbar ist.
          Hast du das überprüft oder vermutest du das? Weshalb unterdrückst du Fehler mit @? Weshalb hast du 2 Funktionen, die exakt dasselbe tun? Hast du Debugging betrieben und geschaut was die Funktionen Dir im einzelenn im Fall A (online) und Fall B (offline) zurückliefern?

          Kommentar


          • #6
            Zitat von jonas3344 Beitrag anzeigen
            Hast du Debugging betrieben und geschaut was die Funktionen Dir im einzelenn im Fall A (online) und Fall B (offline) zurückliefern?
            Ja, du solltest dir zeigen lassen was get_headers($url) liefert. Womöglich ist das was du erwartest nicht in $hdrs[0]. Und das error_reporting aktivieren.

            Für ein Debugging auf Minisystemen wie dein Asus Tinker Board hat sich diese Debug-Klasse bei mir bewährt.
            PHP-Klassen auf github

            Kommentar


            • #7
              jonas3344 DANKE!!! Also habe die @ raus. Dachte ich benötige die @ damit true or false statt eines Werts geliefert wird. Dann habe ich alles auf eine Funktion gekurzt (gesamte script hatte ja 16 mal die selbe funktion deklariert, da ich im entwicklungsstatus so rumspielen konnte und direkt vergleichen konnte was welche auswirklungen im Frontend hat.
              Auf jeden Fall funktioniert jetzt alles offline!
              Es ist zwar deutlich langsamer als online, aber hier vermute ich, das irgendwo noch eine verbindung versucht wird aufzubauen z.b fontawsome oder irgendwas in die richtung.

              Kommentar


              • #8
                Dachte ich benötige die @ damit true or false statt eines Werts geliefert wird.
                Nope.. Der Vollständigkeit halber noch: http://php.net/manual/de/language.op...rorcontrol.php
                Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                PHP.de Wissenssammlung | Kein Support per PN

                Kommentar


                • #9
                  Zitat von rehGum Beitrag anzeigen
                  Es ist zwar deutlich langsamer als online, aber hier vermute ich, das irgendwo noch eine verbindung versucht wird aufzubauen z.b fontawsome oder irgendwas in die richtung.
                  Jeder Browser hat Developer-Tools, dort kannst du (zumeist unter Network) nachsehen was deine Seite laden will und was evtl. nicht geladen werden kann weil extern. Und dort siehst du auch was lange braucht zum laden.

                  Kommentar


                  • #10
                    das irgendwo noch eine verbindung versucht wird aufzubauen z.b fontawsome oder irgendwas in die richtung.
                    Die Fonts-Dateien, dann bei dir auf den Server ablegen, gleiches gilt für JQuery oder andere Fremddateien. Die Verlinkugen/URI ändern, dabei nicht vergessen.

                    Kommentar

                    Lädt...
                    X