2013-04-19 13 views
5

Sto provando a leggere dal wrapper php://memory utilizzando fread() ma fread() restituisce sempre false. Il mio codice è semplificato:Perché leggere da un wrapper di memoria php: // che ho appena scritto per fallire?

$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 è sempre falso dopo la fread().

Cosa sta succedendo?

Grazie in anticipo!

risposta

10

Avrai bisogno di riavvolgere ($ file_handle) dopo aver scritto prima di poter leggere quello che hai appena scritto, perché la scrittura sposta il puntatore del file alla fine del file

+0

Ahhh, mi ha battuto per 33 secondi! – jimmy

0

Si dovrebbe essere sempre presente:

Warning: filesize() si aspetta parametro 1 per essere stringa, risorsa dato

e questi sono i the first problem:

int filesize (string $filename) -   Ottiene la dimensione per il file specificato.

... e il secondo: non è stata attivata la segnalazione degli errori.

Il terzo problema è che il puntatore si trova alla fine del file. Provare qualcosa di simile:

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

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

Ahh sì, sei corretto, filesize() si aspetta un nome di file, nel mio codice originale stavo usando strlen(). E ancora hai ragione, devo riavvolgere()! – jimmy

0

chiamata rewind($file_handle) prima fread()

+0

Questo non fornisce una risposta alla domanda. Una volta che hai [reputazione] sufficiente (https://stackoverflow.com/help/whats-reputation) sarai in grado di [commentare qualsiasi post] (https://stackoverflow.com/help/privileges/comment); invece [fornisci risposte che non richiedono chiarimenti da parte del richiedente] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- i-do-, invece). - [Dalla recensione] (/ recensione/post di bassa qualità/17554346) –

Problemi correlati