2013-04-19 3 views
5

Ich versuche, aus dem php://memory Wrapper mit fread() lesen, aber fread() gibt immer false zurück. Mein Code wird vereinfacht:Warum schlägt das Lesen von einem php: // memory wrapper, auf dem ich gerade geschrieben habe, fehl?

$file_handle = fopen('php://memory', 'w+'); // Have tried php:temp also. 
fwrite($file_handle, 'contents'); 
$file = fread($file_handle, filesize($file_handle)); // Have also tried 99999 for filesize. 

$file immer falsch ist, nach dem fread().

Was ist los?

Vielen Dank im Voraus!

Antwort

10

Sie benötigen ($ file_handle), bevor Sie nach dem Schreiben zurückspulen kann lesen, was Sie gerade geschrieben haben, weil das Schreiben die Dateizeiger auf das Ende der Datei bewegt

+0

Ahhh, Sie schlugen mich für 33 Sekunden! – jimmy

0

du immer sein sollte:

Warnung: 1 erwartet Dateigröße() Parameter Zeichenfolge sein, Ressourcen

gegeben und das sind die the first problem:

int filesize (string $filename) -   Ruft die Größe für die angegebene Datei ab.

... und der zweite: Sie haben keine Fehlermeldung aktiviert.

Drittes Problem ist, dass der Zeiger am Ende der Datei ist. so etwas wie dieses versuchen:

error_reporting(E_ALL); 
ini_set('display_errors', true); 
// ... 

rewind($file_handle); 
$file = ''; // 
while (!feof($file_handle)) { 
    $file .= fread($file_handle, 8192); 
} 
+0

Ahh ja, Sie sind richtig, filesize() erwartet einen Dateinamen, in meinem ursprünglichen Code habe ich strlen() verwendet. Und wieder hast du recht, ich muss zurückspulen()! – jimmy

0

Anruf rewind($file_handle) vor fread()

+0

Dies liefert keine Antwort auf die Frage. Sobald Sie genug [Reputation] (https://stackoverflow.com/help/whats-reputation) haben, können Sie [jeden Beitrag kommentieren] (https://stackoverflow.com/help/privileges/comment); Stattdessen [geben Sie Antworten, die keine Klärung durch den Fragesteller erfordern] (https://meta.stackexchange.com/questions/214173/why-doe-i-need-50-reputation-to-comment-what-can- i-do-stattdessen). - [Aus Bewertung] (/ review/low-quality-posts/17554346) –

Verwandte Themen