php will seite nicht einlesen
lalal
- php
moin,
<?php
$content = implode("", file("http://server:8000"));
$fh = fopen("temp.con", "w");
fputs($fh, $content);
fclose($fh);
?>
da kommt immer Fehler die Datei temp.con bleibt leer,
wenn ich aber (http://server:8000) im Browser startet läuft es 1a
Warning: file("http://server:8000") - No error in c:\apache\util\test\neuer ordner\12.php on line 2
Warning: Bad arguments to implode() in c:\apache\util\test\neuer ordner\12.php on line 2
die Seite kommt von SHOUTcast server (Programm) und das geht über heimnetzwerg oder Internet 1a bloß php schaft es nicht ,ich habe versuch inter oder extern oder andren Port aber nix hat geholfen
wenn ich die Adresse oben ändert-t geht der HTML Code in die Datei
Liebe(r) lalal,
das mit dem implode ist nicht optimal... Mach es besser so:
<?php
$content = file_get_contents("http://server:8000");
> $fh = fopen("temp.con", "w");
> fputs($fh, $content);
> fclose($fh);
> ?>
da kommt immer Fehler die Datei temp.con bleibt leer,
wenn ich aber (http://server:8000) im Browser startet läuft es 1a
Sag uns bloß nicht, wie dieser Fehler lautet! Und außerdem gibt es bei PHP Einstellungen, die ein Öffnen von einer Ressource auf einem fremden Server verbieten. Auf diese Einstellungen hast Du keinen Einfluss. Daher kannst Du weder mit file() noch mit file_get_contents() auf diese Seite zugreifen. Sorry!
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Aber wenn ich
<?php
$content = implode("", file("http://server:8200")); //ist meine 2 HP
$fh = fopen("temp.con", "w");
fputs($fh, $content);
fclose($fh);
?>
oder
<?php
$content = implode("", file("http://www.googel.de"));
$fh = fopen("temp.con", "w");
fputs($fh, $content);
fclose($fh);
?>
Nehme geht das eiwand frei , nur von den pogramm nicht aber im broser wohl
echo $begrüßung;
Aber wenn ich
$content = implode("", file("http://server:8200")); //ist meine 2 HP
Normalerweise könntest du dafür wie schon erwähnt file_get_contents() nehmen
$fh = fopen("temp.con", "w");
fputs($fh, $content);
fclose($fh);
Das bekommt man auch mit file_put_contents() als Einzeiler hin.
$content = implode("", file("http://www.googel.de"));
Nehme geht das eiwand frei , nur von den pogramm nicht aber im broser wohl
Das sieht dann wohl so aus, als ob der server:8000 sich nicht mit den minimalen HTTP-Headern zufrieden gibt, die PHPs URL-Wrapper sendet. Hier musst du zunächst herausfinden, welche HTTP-Header der server:8000 haben will und dann den Request mit fsockopen() und Konsorten ausführen. Da ein Zugriff mit einem Browser klappt, sollte es reichen, wenn du analysierst, welche HTTP-Header der Browser sendet und dann probieren, mit welchem/n Header(n) du zum Ziel kommst.
echo "$verabschiedung $name";
Das sieht dann wohl so aus, als ob der server:8000 sich nicht mit den minimalen HTTP-Headern zufrieden gibt, die PHPs URL-Wrapper sendet.
Was würdest du von diesem Verhalten erwarten?
Es klopft an deiner Tür.
Du fragst "wer ist's".
Nichts antwortet.
Fall erledgt.
Der OP weiss nicht, was er mit file() eigentlich will.
Eine Domain will er wahrscheinlich nicht, oder etwa doch?
mfg Beat
echo $begrüßung;
Der OP weiss nicht, was er mit file() eigentlich will.
Eine Domain will er wahrscheinlich nicht, oder etwa doch?
Domains gibt es bei diversen Providern und Domainregistraturen. Der OP möchte ein unter einer URL erreichbares Dokument abrufen. Dafür hat PHP eingebaute Wrapper, die diesen Vorgang so einfach wie das Lesen aus einer Datei machen. Doch diese Einfachheit hat seine Grenzen, auf die er in seinem Fall gestoßen ist.
Das sieht dann wohl so aus, als ob der server:8000 sich nicht mit den minimalen HTTP-Headern zufrieden gibt, die PHPs URL-Wrapper sendet.
Was würdest du von diesem Verhalten erwarten?
Es klopft an deiner Tür.
Du fragst "wer ist's".
Nichts antwortet.
Fall erledgt.
Da verstehe ich nicht, worauf du hiaus willst. Das ist weder das übliche HTTP-Verhalten noch weißt du oder ich, was beim OP tatsächlich passiert, solange er es nicht analysiert und uns mitteilt. Meine Erfahrung in einem gleichgelagerten Fall sagt mir, dass es an einer fehlenden Zeile im Request liegen kann. Minimal sieht ein Request so aus:
GET /ressource HTTP/1.1
Für virtuelle mehrere Hosts unter der gleichen IP-Adresse benötigt man noch
Host: www.example.net
Das reicht, um einen Request beantworten zu können. Und PHPs URL-Wrapper sendet in der Tat in der Grundkonfiguration nur diese beiden Zeilen. Das System aus meiner Erfahrung bestand darauf, eine User-Agent-Zeile gesendet zu bekommen. Wie ich grad in der Dokumentation fand, kann man diese mit einem konfigurierten ini_set('user_agent', ...); senden lassen, dann braucht es auch kein fsockopen().
echo "$verabschiedung $name";
Hello,
Da verstehe ich nicht, worauf du hiaus willst. Das ist weder das übliche HTTP-Verhalten noch weißt du oder ich, was beim OP tatsächlich passiert, solange er es nicht analysiert und uns mitteilt. Meine Erfahrung in einem gleichgelagerten Fall sagt mir, dass es an einer fehlenden Zeile im Request liegen kann.
Wenn es sich z.B. um einen Request auf ein Google-Tool handelt, der automatisch aufgerufen wird, dann kann es sich auch um eine Misskonfiguration in der Firewall des eigenen Providers handeln ;-(
So geschehen bei Strato.
Genau dasselbe Modul lief auf allen anderen getesteten Hosts einwandfrei, sogar beim selben Provider.
Ein harzliches Glückauf
Tom vom Berg
Hallo,
ouuuu äää ich habe mal
<?php
$fp = fsockopen("http://server:8000", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: www.example.com\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
?>
gemacht und da kommt nix nur "< /br>" wen ich aber googel nehme kommt alles
ich habe ganz nomalen ADSL Anschluss mit einer dyndns und über Port kan ich den an ein PC(Server) den aufrufen
Hello,
$fp = fsockopen("http://server:8000", 80, $errno, $errstr, 30);
Ich muss gestehen, dass mir der Sinn der obigen Paramter, insbesondere des ersten (Host) in Verbindung mit dem zweiten (Port) irgendwie abgeht.
Und das Scheme im Host anzugeben ist ebenfalls redundant, denn das wird in
$out = "GET / HTTP/1.1\r\n";
angeben, wie man sieht.
Ein harzliches Glückauf
Tom vom Berg
echo $begrüßung;
$fp = fsockopen("http://server:8000", 80, $errno, $errstr, 30);
Ich muss gestehen, dass mir der Sinn der obigen Paramter, insbesondere des ersten (Host) in Verbindung mit dem zweiten (Port) irgendwie abgeht.
Und das Scheme im Host anzugeben ist ebenfalls redundant, [...]
Stimmt, der erste Parameter ist ein reiner Hostname oder eine IP-Adresse, keinesfalls eine komplette URL (zumindest in diesem Fall, Ausnahmen siehe PHP-Handbuch). Unabhängig davon prophezeihe/vermute ich, dass es auch nach einer Korrektur so noch nicht gehen wird.
echo "$verabschiedung $name";
also so oder wie ??
<?php
$fp = fsockopen("server", 8000, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: server:8000\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
?>
ich steig fast garnicht durch was ich faltschmache besonders wie was muss ich ändern das das geht
<?php
$content = implode("", file("http://server:8200"));
$fh = fopen("temp.con", "w");
fputs($fh, $content);
fclose($fh);
?>
Wenn du
http://server:8200
in den location bar des Browsers eingibst.
Was steht danach in der location bar, nachdem die Ressource erfolgreich geholt wurde?
Wenn du
http://www.elcappuccino.ch
in den location bar des Browsers eingibst.
Was steht danach in der location bar, nachdem die Ressource erfolgreich geholt wurde?
Warum bekommst du (k)eine Ressource, wenn/obwohl du keine anforderst?
mfg Beat
ich habe ein heimnetzwerg mit einer fritz.box wo ich port 80 21 8000 8100 ... und par andre auf den pc "server" weiter geleitet
und ich habe bei dyndns eine eingerichtet die ein namen meine ip zu weist der pc hat als name server und wenn ich auf mein pc in broser server eingeben komme ich auf meine hp von den pc die drauf ist
internet----fritzbox |---lalalpc
|---server
emm dns oder so was ist eigentlich alles für netzwerg in fritz.box drinne
bei
<?php
$fp = fsockopen("server", 8000, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: www.example.com\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
echo "---";
echo $errno;
echo "---";
echo $errstr;
?>
kommt-----------------------------------------anfang------------------
ICY 401 Service Unavailable
icy-notice1:<BR>SHOUTcast Distributed Network Audio Server/win32 v1.9.8<BR>
icy-notice2:The resource requested is currently unavailable<BR>
---0---
-------------ende---------------------------------------------------------
zu Beat
also wen ich auf mein pc das offne steht in der andreszeile
http://server:8200 ist faltsch das mein 2 server 8000 ist das
http://server:8000 = http://server:8000/
http://www.elcappuccino.ch = http://www.elcappuccino.ch/
oder habe ich das faltsch mitbekommen
ich habe was gefunden
http://www.streamsolutions.co.uk/index.php?page=s5#sis
<div style="Visibility: Hidden; Position: Absolute;">
<?
$open = fsockopen("ENTER YOUR IP ADDRESS HERE","ENTER PORT HERE");
if ($open) {
fputs($open,"GET /7.html HTTP/1.1\nUser-Agent:Mozilla\n\n");
$read = fread($open,1000);
$text = explode("content-type:text/html",$read);
$text = explode(",",$text[1]);
} else { $er="Connection Refused!"; }
?>
</div>
<?
if ($text[1]==1) { $state = "Up"; } else { $state = "Down"; }
if ($er) { echo $er; exit; }
echo "<font face=verdana size=1>
Listeners: $text[0] of $text[3] ($text[4] Unique)<br>
Listener Peak: $text[2]<br>
Server State: <b>$state</b><br>
Bitrate: $text[5] Kbps<br>
Current Song: $text[6]
</font>";?>
Hello,
also so oder wie ??
<?php
$fp = fsockopen("server", 8000, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: server:8000\r\n";
$out .= "Connection: Close\r\n\r\n";fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
?>
So ist es formal richtig. "server" muss eine vom DNS auflösbare Domainbezeichnung sein.
Hast Du _für_ den Host, auf dem das Script läuft, einen DNS eingerichtet? Also weiß der, wo er den nächsten DNS findet? Und ist der Gateway auch eingerichet?
ich steig fast garnicht durch was ich falsch mache, besonders wie und was muss ich ändern, dass das geht?
Gibt es Fehlermeldungen?
Hast Du Dir schon $errno und $errstr ausgeben lassen?
Ein harzliches Glückauf
Tom vom Berg
echo $begrüßung;
Du müsstest einfach mal aufmerksam mitlesen, _alle_ gegebenen Hinweise berücksichtigen, und vor allem versuchen das Problem zu verstehen. Ansonsten kommen wir hier nicht weiter. Du verzettelst dich gerade in Nebenschauplätzen.
ich steig fast garnicht durch was ich faltschmache besonders wie was muss ich ändern das das geht
Noch ein letzer Erklärungsversuch meinerseits. Diese Frage ist so pauschal nicht zu beantworten, weil bisher keiner weiß, wie der Request aussehen muss, den dein Server haben möchte (abgesehen vom Minimum GET und Host). Der Browser schafft es, PHP offensichtlich nicht. Also wo liegen die Unterschiede zwischen beiden? Es kann nur der Request und die dabei mitgelieferte Information sein. Welche Zeilen erwartet dein Server im Request? Hast du eine Dokumentation zum Server? Wenn nicht bleibt dir nur auszuprobieren. Ein guter Anfang wäre, wie schon erwähnt der User-Agent. Wenn deinem Server das noch nicht reicht, dann erst benötigst du fsockopen() und musst mit weiteren Request-Zeilen probieren. Wie so ein Request aussieht, den der Browser sendet zeigen dir Tols wie die livehttpheaders-Extension für den Firefox.
echo "$verabschiedung $name";
Hallo,
$fp = fsockopen("http://server:8000", 80, $errno, $errstr, 30);
Ich muss gestehen, dass mir der Sinn der obigen Paramter, insbesondere des ersten (Host) in Verbindung mit dem zweiten (Port) irgendwie abgeht.
das ist in der Tat widersprüchlich, aber ...
Und das Scheme im Host anzugeben ist ebenfalls redundant
Es ist nicht nur redundant, sondern schlicht falsch. So würde man versuchen, eine Verbindung zum Host "http://server:8000" aufzubauen, und einen solchen Hostnamen gibt es nicht - die Verbindung wird fehlschlagen.
Ciao,
Martin
echo $begrüßung;
ouuuu äää ich habe mal
$fp = fsockopen("http://server:8000", 80, $errno, $errstr, 30);
$out .= "Host: www.example.com\r\n";
Das passt nicht zusammen.
gemacht und da kommt nix nur "< /br>" wen ich aber googel nehme kommt alles
Vielleicht kommst du ja zu einem positiven Ergebnis, wenn du die anderen gegebenen Hinweise nicht ignorierst. Wenn der Browser aufrufen kann, aber PHP nicht, dann liegt das vermutlich an den Zeilen des Requests, denn etwas grundsätzlich anderes macht der Browser auch nicht.
echo "$verabschiedung $name";
Hallo,
Für virtuelle mehrere Hosts unter der gleichen IP-Adresse benötigt man noch
Host: www.example.net
RFC 2616 §14.23 sagt aber etwas anderes - nämlich dass der Host-Header von Clients immer angegeben werden muss. Nur wenn es keinen Host-Namen gibt, bleibt der Header leer, muss aber trotzdem mitgeschickt werden. Wird er das nicht, muss der Server den Request verweigern.
Das gilt nur für HTTP/1.1.
Gruß