www.mikrocontroller.net

Forum: PC-Programmierung AVR-Webserver / PHP


Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,


da ich im PHP Forum noch nichts erfahren habe, versuche ich es mal hier 
:

meine Hardware : Atmega32 + U.Radig Webserver / Isa-Card kurz: (AVR 
Webserver)

der Webserver läuft prima, Hardsoftware und Software ok

damit der Webserver von aussen (WWW) erreichbar ist, habe ich ein DYN??? 
eingerichtet, auch ok, funktioniert prima.

#########
nun soll auf meiner Homepage ein PHP-Skript überprüfen, ob der Webserver 
bzw. die HTML Seite des Webservers online ist.

obwohl der Webserver online ist, kommt die "Meldung" "Server offline".

Php Skript Auszug 3 X :


test 1:
$fp = fsockopen("www.URLmeineHOMEpage.de",80, &$errno, &$errstr,30);<--- 
Funktioniert

test 2:
$fp = fsockopen("www.URLdesWEBSERVER.com",80, &$errno, &$errstr,30);<--- 
Funktioniert NICHT !

test 3:
$fp = fsockopen("www.google.com",80, &$errno, &$errstr,30);<--- 
Funktioniert


für einen Tip wäre ich dankbar

Stephan

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anmerkung:

ping URLdesWEBSERVER.com, auch ok

Autor: Uwe Berger (boerge) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Idee dazu, die meistens übersehen wird:

Dein Webserver steht ja bestimmt hinter einer Firewall in deinem eigenen 
Netz. Wenn dies so ist, sollte diese auch entsprechend konfiguriert 
sein, dass Pakete durchgelassen werden. Zauberwort heißt in dem Fall 
u.a. auch NAT.

Grüße Uwe

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

hab gerade die Firewall deaktiviert ,-> immer noch nichts

gelesen :
http://www.openbsd.org/faq/pf/de/nat.html#ipfwd
und nicht verstanden

dennoch Danke

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hast du auch in deinem Router dein AVR-WebServer Port (80) gesetzt? NAT?

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also siehe oben:

meine Hardware : Atmega32 + U.Radig Webserver / Isa-Card kurz: (AVR
Webserver)

der Webserver läuft prima, Hardsoftware und Software ok

damit der Webserver von aussen (WWW) erreichbar ist, habe ich ein DYN???
eingerichtet, auch ok, funktioniert prima.

Portfreigabe in der Fritzbox eingerichtet: Port 80

alles prima nur das Php-Skript sagt :
alle Url(s) sind erreichbar, nur dein Webserver nicht

über einen Browser kann ich von Timbukto den Webserver auch erreichen,
getestet leider nur aus Wuppertal (mein Bruder hat getan)


Stephan

Autor: Michael K. (mmike)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn der Server von "aussen" erreichbar ist über Dyndns oder ähnliches 
und im Router auch die DMZ (sprich Anfragen vom Inet werden an die DMZ 
IP weitergeleitet) eingerichtet ist, dann sollte es klappen ...
Die Prüfung per ping schaut aber nur, ob der Router online ist ....

Bleibt zu klären, ob überhaupt der Server hinter nem Router hängt ...

Grüße,
Michael

Autor: Uwe Berger (boerge) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, mal prinzipiell:

Ich gehe mal davon aus, dass dein Webserver nicht direkt an deinem 
Internetanschluß hängt und direkt mit dem Inernet kommuniziert. Die 
übliche Konstellation ist doch folgende:

Zwischen Internet und deinem internen Netz befindet sich ein Router. Zur 
Internetseite hin bekommt er (meist dynamisch) eine IP-Adresse von 
deinem Provider. Zu deinem internen Netz eine IP-Adresse aus deinem 
Netz.

Ich gebe ebenfalls mal davon aus, dass dein Webserver in deinem internen 
Netz steht und auch eine IP aus diesem hat.

Zum Internet hin ist nur die IP-Adresse, die du vom Provider zugewiesen 
bekommen hast, bekannt. Wenn du aus dem Internet deinen AVR in deinem 
Netz ansprechen willst, müssen die Adressen "übersetzt" werden. In der 
Regel gibt es dazu auf den Routern NAT (network adress translation), was 
wie folgt funktioniert:

Vom Internet kommt ein Datenpaket an die IP deines Routers mit einer 
bestimmten Port-Adresse (bei dir z.B. Port 80). NAT auf dem Router muß 
nun so konfiguriert sein, dass alles, was für Port 80 ist, an die 
interne IP-Adresse des AVR gesendet wird. Es wird also Internet-IP in 
interne IP übersetzt...

Die Geschichte mit DYN... auf dem AVR ist eigentlich nicht notwendig. 
Vielmehr sollte soetwas dein Router machen...

Grüße Uwe

Autor: Michael K. (mmike)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke mal das die Dyn... Geschichte schon auf dem Router läuft, denn 
anders machts wenig Sinn. Wenn der Router mit dem Inet verbindet und 
sich eine IP vom Provider bekommt, dann trägt der Router diese IP 
wiederum beim Dynamic DNS Dienst ein und man kann den Router unter 
URLdesWEBSERVER.com erreichen. Jetzt muss eben noch der Router die 
Weiterleitung an den wohl mit lokaler IP versehenen Webserver vornehmen 
und das funzt mit dem Einrichten einer DMZ (Demilitarized zone)

Grüße,
Michael

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frage :

Die Prüfung per ping schaut aber nur, ob der Router online ist ....

Ping URLdesWEBSERVER.com war ok

am Promt kam noch die Info z.B     77.12.34.80    ok

77.12.34.80 im Browser eingegeben -> Mein Webserver meldet sich


#
Bleibt zu klären, ob überhaupt der Server hinter nem Router hängt ...
-> er steht daneben
#

war ein Scherz

Stephan

Autor: Joerg Wolfram (joergwolfram)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn man mit einem Browser von ausserhalb an den Webserver kommt (wie 
ich das so rausgelesen habe) scheint das Problem eine andere Ursache zu 
haben. An einfachsten wäre es vielleicht zu testen was passiert, wenn 
man auf einem Rechner (ausserhalb) mit dem man per Browser auf den 
Webserver kommt, mit einem (lokalen) PHP-Script den gleichen Versuch 
macht.

Gruß Jörg

Autor: Michael K. (mmike)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist doch schon mal wunderbar !! Auch wenn der Server NEBEN dem 
Router steht ;-) !

Zu Deinen Tests:

Was für eine Fehlermeldung kommen denn bei:

$fp = fsockopen("www.URLdesWEBSERVER.com",80, &$errno, &$errstr,30);

bzw. versuch mal anstatt "www.URLdesWEBSERVER.com" die IP zu öffnen ...

Autor: GastAABB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du Dir einmal den Fehler + Fehlercode ausgeben lassen?

$fp = fsockopen("www.example.com", 80, &$errno, &$errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
}

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich würde jetzt einfach mal vermuten, daß PHP bei fsockopen() etwas 
benutzt, was vom AVR-Webserver schlicht nicht unterstützt wird.
Normalerweise würde ich jetzt das ganze local testen und WireShark 
mitlaufen zu lassen, um zu sehen, was der PHP-Server schickt und was der 
AVR antwortet oder eben auch nicht...

Gruß aus Berlin
Michael

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
##########################
Hallo  Michael U. (amiga)
das PHP Skript läuft auf meiner Homepage, nicht auf dem Webserver
dennoch Danke
##############################

Hallo  Michael K. (mmike)

dein Tipp mit
bzw. versuch mal anstatt "www.URLdesWEBSERVER.com" die IP zu öffnen ...
war gut

test 4:
$fp = fsockopen("123.123.123.007",80, &$errno, &$errstr,30);<---
Funktioniert prima, danke nochmal

es klappt aber...
morgen habe ich ne andere IP, dynamisch eben. daher Dynorg
und jetzt ?

Stephan

Autor: Michael K. (mmike)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm. Teilerfolg.

Dann funzt irgendwas mit der Namensauflösung nicht ....

schreib vllt. mal das Protokoll, also http:// davor ...

welche Fehlermeldung steht denn in dem $errstr drin, wenn's nicht klappt 
?

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo  Michael K. (mmike)

$fp = fsockopen("http://URLmeineHOMEpage.de",80, &$errno, &$errstr,30);

PHP Fehlermeldung : was ist String Http:// ?

Stephan

PS:
kleine Pause, habe jetzt nen Excelkurs. wenn dann sonst  nix ist

Stephan

Autor: Michael K. (mmike)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noch ne Möglichkeit:

IP rausfinden mittels: gethostbyname("example.com");

und dann die IP connecten ....

also

$ServerIP = gethostbyname ("URLmeineHOMEpage.de");
$fp = fsockopen($ServerIP, 80, &$errno, &$errstr,30);

Grüße,
Michael

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So ein aehnliches Problem hatte ich auch. Hole dir mal von der DYNDNS 
Homepage das Programm das die IP-Addresse bei DYNDNS eintraegt und 
installiere das mal. Neben der IP-Addresse traegt das auch noch was 
anderes bei DYNDNS ein . Die Eintragungen vom deinem Modem bei DYNDNS 
alleine reichen nicht. Wenn DYNDNS eine neue IP-Addresse von dir bekommt 
will es danach noch eine Bestaetigung das der Server Betriebsbereit ist.
Jedenfalls war es bei mir so.

Gruss Helmi

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo Michael

$ServerIP = gethostbyname ("URLmeineHOMEpage.de");
$fp = fsockopen($ServerIP, 80, &$errno, &$errstr,30);

brachte keinen Erfolg, aber auch keine Fehlermeldung
das auch ist manchmal viel Wert

Seltsam:
mit
echo "$ServerIP<br />\n";

hätte ich 123.123.123.07 erwartet
es kam aber Klartext:

URLmeineHOMEpage.de

Stephan

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo Michael

Es klappt !!!!!!!

dein Text :

$ServerIP = gethostbyname ("URLmeineHOMEpage.de");
$fp = fsockopen($ServerIP, 80, &$errno, &$errstr,30);

meine Eingabe

$ServerIP = gethostbyname ("www.URLmeineHOMEpage.de");
$fp = fsockopen($ServerIP, 80, &$errno, &$errstr,30);
Fehlermeldung

ohne www -> klappt prima

Danke

Autor: Michael K. (mmike)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Cool !! Glückwunsch !!!

Grüße,
Michael

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
au weia
sollte sein

hallo Michael

Es klappt !!!!!!!

dein Text :

$ServerIP = gethostbyname ("URLdesWEBSERVER.com");
$fp = fsockopen($ServerIP, 80, &$errno, &$errstr,30);

meine Eingabe

$ServerIP = gethostbyname ("www.URLdesWEBSERVER.com");
$fp = fsockopen($ServerIP, 80, &$errno, &$errstr,30);
Fehlermeldung

ohne www -> klappt prima

Danke

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.