Moin,
das PHP 5.2.5 auf meinem Server ist so konfiguriert, dass allow_url_fopen=OFF ist (gleiches gilt für allow_url_include).
Damit ist wohl ausgeschlossen, mittels fopen() eine entfernte Datei (z.B. www.sonstwo.de/irgendwas.rdf) einzulesen. Bei fsockopen bin ich mir nicht sicher, ob das bei dieser Konfiguration spielt. Ein kleiner Test brachte da kein Ergebnis (leere Seite ohne Fehlermeldung).
Frage: Gibt es eine Möglichkeit, sich eine entfernte Datei reinzuholen, ohne die Konfiguration zu ändern? Welche anderen Konfig-Parameter würden dann u.U. eine Rolle spielen?
Danke,
Kristian
Hallo
fsockopen sollte trotzdem funktionieren, es sollte jedenfalls keine leere Seite erscheinen. Probier mal folgendes:
<?php $fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)
\n";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: [www.example.com\r\n](http://www.example.com%5Cr%5Cn)";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
?\>
Dann sollte folgendes kommen:
HTTP/1.1 200 OK
Date: Sun, 29 Jun 2008 12:00:36 GMT
Server: Apache/2.2.3 (CentOS)
Last-Modified: Tue, 15 Nov 2005 13:24:10 GMT
ETag: "280100-1b6-80bfd280"
Accept-Ranges: bytes
Content-Length: 438
Connection: close
Content-Type: text/html; charset=UTF-8
Example Web Page You have reached this web page by typing "example.com",
"example.net",
or "example.org" into your web browser.
These domain names are reserved for use in documentation and are not available
for registration. See [RFC 2606](http://www.rfc-editor.org/rfc/rfc2606.txt), Section 3.
Alternativ könntest du mit exec('wget -O Zieldatei [http://example.com'](http://example.com')); experimentieren, aber exec ist aus Sicherheitsgründen oft gesperrt.
Johannes Matschke
fsockopen klappt fast …
Hallo Johannes,
genau dieses Beispiel hatte ich - welch Zufall
- auch verwendet, bis auf dass ich versehentlich ein " gelöscht hatte … naja, danach ging´s.
Allerdings scheint es so zu sein, dass man damit keine Dateien referenzieren kann, denn sowie ich z.B. an das „www.example.com“ noch ein „/datei.txt“ ranhänge, kommt nur (1) bzw. (-1073889036) zurück, was offenbar die Existenz der Datei bestätigt bzw. verneint. Der Inhalt der Datei wird allerdings nicht zurückgegeben und übrigens auch nicht der Header, der sonst immer oben noch dabei steht. Probiert hatte ich es natürlich mit einer anderen URL.
Gibt´s da noch irgendeine Option, die ich übersehen habe?
Kristian
Hallo
Allerdings scheint es so zu sein, dass man damit keine Dateien
referenzieren kann, denn sowie ich z.B. an das
„www.example.com“ noch ein „/datei.txt“ ranhänge, kommt nur
Das /datei.txt darf nicht an www.example.com ran, sondern muss in folgender Zeile eingefügt werden:
$out = „GET / HTTP/1.1\r\n“;
$out = „GET /datei.txt HTTP/1.1\r\n“;
Johannes
1 „Gefällt mir“
Jupp …
Das /datei.txt darf nicht an www.example.com ran, sondern muss
in folgender Zeile eingefügt werden:
$out = „GET / HTTP/1.1\r\n“;
$out = „GET /datei.txt HTTP/1.1\r\n“;
Das muss man natürlich wissen … steht nämlich nicht im Manual drin leider. Danke, das funktioniert. Header und Inhalt kommen sauber rübergewachsen.
Viele Grüße,
Kristian
Das muss man natürlich wissen … steht nämlich nicht im
Manual drin leider.
Das würde den Rahmen auch etwas sprengen.
Zur weiteren Lektüre empfehle ich http://de.wikipedia.org/wiki/Hypertext_Transfer_Prot… und http://www.bolege.de/http-header/.
Da kann man feine Sachen machen. Proxy nutzen, Cookies annehmen, passwortgeschützte Seiten öffenen, Formulare absenden…
Gruß, Johannes