Seite 2 von 2

Verfasst: 22.12.2007 23:24
von sts
Du musst die quelle mit implode('', file(...)) öffnen.
Ich bin mir nicht sicher, meinst du:

Code: Alles auswählen

if (!$quelleopen = fopen($quelle, "r")) { 
ändern in

Code: Alles auswählen

if (!$quelleopen = implode('', file(fopen($quelle, "r")))) { 
?
Eine vage Vermutung wäre, dass das Öffnen der URL zu lange braucht und das Skript abgebrochen wird
Ich habe die RSS-Feed Scriptzeiten gestoppt 0,002 Sek, sowie andere Quelle mit statischen Daten genommen. Ich schließe das einfach einmal aus.

Verfasst: 22.12.2007 23:27
von gn#36
fopen brauchst du nicht. file schließt diese Funktion gewissermaßen mit ein.

Verfasst: 23.12.2007 00:14
von sts

Code: Alles auswählen

if (!$quelleopen = implode('', file($quelle)) {
         print "Kann die Datei $quelle nicht öffnen";
Habe ich das jetzt richtig verstanden?

Verfasst: 23.12.2007 00:36
von gn#36
Das sieht besser aus.
Das Implode fügt das Array aus Zeilen zu einem String zusammen.

Verfasst: 23.12.2007 00:46
von sts
Das ist unglaublich warum will es denn nicht laufen:
Fehlermeldung:
Premature end of script headers: test1.php
Es wird jetzt nur eine simple TXT Datei angefordert:

Code: Alles auswählen

 <?php

$quelle = 'http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt';
$ziel = '/html/test/ziel.rss';

// Sichergehen, dass die Datei existiert und beschreibbar ist
if (is_writable($ziel)) {

// Quellendatei öffnen
if (!$quelleopen = implode('', file($quelle))) {
         print "Kann die Datei $quelle nicht öffnen";

    }
    // zieldatei datei öffnen
    if (!$zielopen = fopen($ziel, "r+")) {
                         print "Kann die Datei $ziel nicht öffnen";
                         exit;
    }

                    // Schreibe Quelle in Ziel .
                    if (!fwrite($zielopen, $quelle-open)) {
                        print "Kann in die Datei $zielopen nicht schreiben";
                        exit;
    }

 print "Fertig, in Datei $ziel wurde $quelle geschrieben";

fclose($quelle);
fclose($ziel);

} else {
    print "Die Datei $ziel ist nicht schreibbar";
}
?>

Verfasst: 23.12.2007 01:24
von gn#36
Ich habe das gerade mal ausprobiert und es muss wohl an deinem Server liegen (evtl. wird URL fopen nicht unterstützt oder ist aus Sicherheitsgründen deaktiviert.). Hast du mal in deine Server-Logs gesehen ob da eine genauere Fehlermeldung ist (glaube ich zwar nicht, aber ausgeschlossen wäre es nicht).

Du schließt übrigens eigentlich die Streams die du geöffnet hast und nicht die Pfadnamen (-> die Parameter für fclose sind falsch). Daran liegt es aber nicht. Die Minuszeichen hast du auch nicht alle entfernt, du benutzt immer noch $quelle - open (open wird hier aber als Konstante aufgefasst und verursacht dabei daher nur einen Fehler der Stufe E_NOTICE).

Verfasst: 23.12.2007 14:06
von sts
Malzeit,

so ich habe dann nochmal das Script überarbeitet:

Code: Alles auswählen

<?php

$quelle = 'http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt';
$ziel = '/html/test/ziel.rss';

// Sichergehen, dass die Datei existiert und beschreibbar ist
if (is_writable($ziel)) {

// Quellendatei öffnen
if (!$quelleopen = implode('', file($quelle))) {
         print "Kann die Datei $quelle nicht öffnen";

    }
    // zieldatei datei öffnen
    if (!$zielopen = fopen($ziel, "r+")) {
                         print "Kann die Datei $ziel nicht öffnen";
                         exit;
    }

                    // Schreibe Quelle in Ziel .
                    if (!fwrite($zielopen, $quelleopen)) {
                        print "Kann in die Datei $zielopen nicht schreiben";
                        exit;
    }

 print "Fertig, in Datei $ziel wurde $quelle geschrieben";

fclose($quelleopen);
fclose($zielopen);

} else {
    print "Die Datei $ziel ist nicht schreibbar";
}
?>
Die PHP.ini sagt:
[ externes Bild ]

Meine Dateienattribute passen auch:
[ externes Bild ]
Und trotzdem will es nicht funktionieren!! Verdammt

Verfasst: 23.12.2007 23:48
von gn#36
Da kann ich nicht mehr viel zu sagen fürchte ich. Bei mir lief es wie gesagt (außer den genannten Fehlern, fclose($quelleopen); ist völlig sinnlos und wirft eine Fehlermeldung, da das alles von file übernommen wird).
Daran dürfte es aber eigentlich nicht scheitern. Das Skript sollte eigentlich klappen.