Problem mit remote Files bei fopen() & fread()

Bash, Shell, PHP, Python, Perl, CGI
gladi
Posts: 17
Joined: 2003-09-18 20:36

Problem mit remote Files bei fopen() & fread()

Post by gladi »

Moin,
ich habe folgendes Problem, wo ich mir schon seit > 1 Woche die Zähne dran ausbeiße. :(

Laut Apache2 & PHP 4.3.2 habe ich alle Berechtigungen um fopen und fread zu nutzen. Dies geht auch wunderbar bei Files im LOKALEN Filesystem. ABER bei z.b. fopen("http:www.google.de","r") bekomme ich zwar eine Resource ID geliefert, jedoch kann ich nichts lesen. strlen() von dem ganzen liefert "0"; und filesize() sagt:

Code: Select all

Warning: filesize(): Stat failed for Resource id #15 (errno=2 - No such file or directory) in /home/www/... on line XXX
Kann es irgendwie sein, dass ich auf meinem System die Berechtigungen so scheisse gesetzt habe, dass ich temporäre Files saven, aber nicht lesen kann? Bzw. wie werden diese RessoucenIDs überhaupt vergeben und wo wird sowas temporär abgelegt?

mfg,
Gladi

PS: Das Script läuft nicht als root oder ähnlichen Spielereien, sondern als kleiner User mit kaum Rechten.
gamecrash
Posts: 339
Joined: 2002-05-27 10:52

Re: Problem mit remote Files bei fopen() & fread()

Post by gamecrash »

Für strlen() musst Du den Text als Parameter angeben, keine Ressource oder einen Link.

Für Filesize siehe http://de.php.net/filesize
Diese Funktion ist nicht für remote Dateien geeignet, die zu prüfende Datei muss über das Dateisystem des Servers verfügbar sein.
Wenn Du mal kurz postest, was Du erreichen willst (den Inhalt der Datei in ne Variable kriegen oder nur die Größe auslesen oder wie) können wir Dir da bestimmt weiterhelfen...
gladi
Posts: 17
Joined: 2003-09-18 20:36

Re: Problem mit remote Files bei fopen() & fread()

Post by gladi »

Mein Ziel: Wie schon angedautet, ich möchte (es hatte auf einem anderen Server schon funktioniert, aber durch Umzug -> andere Serverkonfiguration funktioniert es nun nicht mehr) eine HTML Seite, die über eine Domain z.b. rootforum.org/ etc blabla... auslesen und ggf nach Keywörtern durchsuchen oder sonstwas mit anstellen. Zumindest muss die ganze Seite erstmal in einen String.
Das mit Filesize war auch nicht so wichtig, eher nur ein Beispiel für die Fehlermeldung, was im wesentlichen nicht geht ist fread().

Das ist strlen() nicht SO angewandt habe sollte klar sein.

Code: Select all

$url = "http://www.beispielurl.de/index.html"
if ($file = fopen($url,"r")) {
    $src_html = fread($file,999999);
    fclose($file);
    echo strlen($src_html); // Gibt "0"
    echo $src_html; // Gibt NULL
}
gamecrash
Posts: 339
Joined: 2002-05-27 10:52

Re: Problem mit remote Files bei fopen() & fread()

Post by gamecrash »

Also, mal ein paar Ansätze die Du probieren könntest:

Ã?berprüfe mal, ob allow_url_fopen erlaub ist

Code: Select all

$text = file_get_contents($fileurl);
Das geht allerdings erst ab PHP 4.3.0

Code: Select all

$text = implode('', file($fileurl));
Die recht simple Lösung (vorrausgesetzt, file() funktioniert)

Code: Select all

$handle = fopen ($fileurl, "rb");
$text = "";
do {
    $data = fread($handle, 8192);
    if (strlen($data) == 0) {
        break;
    }
    $text .= $data;
} while(true);
fclose ($handle);
die Lösung von php.net für Remote-Dateien mit älteren PHP-Versionen
gladi
Posts: 17
Joined: 2003-09-18 20:36

Re: Problem mit remote Files bei fopen() & fread()

Post by gladi »

Ich glaub ich spinne. Also erstmal vielen Dank file_get_contents($url) geht. Ich bekomm die Seite als String....aber wieso zum Teufel geht fread() nicht mehr für remote files?!?!?! *grml*
allow_url_fopen ist natürlich TRUE.
gamecrash
Posts: 339
Joined: 2002-05-27 10:52

Re: Problem mit remote Files bei fopen() & fread()

Post by gamecrash »

Geht mein unterster Code auch nicht? Ich hab da mal was auf bugs.php.net gelesen dass die was beim fread geändert haben, bin mir aber ned sicher...
gladi
Posts: 17
Joined: 2003-09-18 20:36

Re: Problem mit remote Files bei fopen() & fread()

Post by gladi »

den unteresten hab ich nicht ausprobiert, weil der erste schon ging. ^^