Forum: PC-Programmierung AVR-Webserver / PHP


von Stephan (Gast)


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

von Stephan (Gast)


Lesenswert?

Anmerkung:

ping URLdesWEBSERVER.com, auch ok

von Uwe B. (boerge) Benutzerseite


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

von Stephan (Gast)


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

von Martin (Gast)


Lesenswert?

Hallo,

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

von Stephan (Gast)


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

von Michael K. (mmike)


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

von Uwe B. (boerge) Benutzerseite


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

von Michael K. (mmike)


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

von Stephan (Gast)


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

von Joerg W. (joergwolfram)


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

von Michael K. (mmike)


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 ...

von GastAABB (Gast)


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";
}

von Michael U. (amiga)


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

von Stephan (Gast)


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

von Michael K. (mmike)


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 
?

von Stephan (Gast)


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

von Michael K. (mmike)


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

von Helmut L. (helmi1)


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

von Stephan (Gast)


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

von Stephan (Gast)


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

von Michael K. (mmike)


Lesenswert?

Cool !! Glückwunsch !!!

Grüße,
Michael

von Stephan (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.