Entfernte Datei einlesen bei allow_url_fopen=OFF?

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 :wink: - 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 Like

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

Ich guck mal rein, danke :smile: • o.w.T.

http://de.wikipedia.org/wiki/Hypertext_Transfer_Prot…
http://www.bolege.de/http-header/