Jump to content
Sign in to follow this  
carlino1994

Lettura di un file

Recommended Posts

Buona sera,

ho la necessità di leggere il contenuto di un file e mostrarne il suo contenuto.

 

Attualmente mi sono creato questo semplice script:

        $handle = fopen($path . $file, "rb");
       $output = "";

       while(!feof($handle)) {
           $output .= fread($handle, 1024);
       }

       fclose($handle);

Però il file non mi viene letto completamente, ma solo in parte.

 

Ho provato anche con quest'altro, ma nulla.

        $handle = fopen($path . $file, "rb");{
      $output = fread($handle, filesize($path . $file));

       fclose($handle);

Spero che qualcuno mi sappia aiutare.

 

Grazie in anticipo.

Share this post


Link to post
Share on other sites

Come specificato sul sito php.net, omettendo il secondo parametro della funzione fread(), cioè il numero di byte da leggere, viene impostato in automatico una dimensione di 1024 byte, ovvero corrisponderebbe al primo script che ho creato.

Share this post


Link to post
Share on other sites
Buona sera,

ho la necessità di leggere il contenuto di un file e mostrarne il suo contenuto.

 

cut...

 

Ciao,

 

il codice che hai scritto è corretto (sia il primo che il secondo), quindi in teoria dovrebbe fare quel che dici.

 

Devi leggere un file locale o uno stream remoto?

A che punto (quanti byte) riesci a leggere prima che si blocchi la lettura?

Share this post


Link to post
Share on other sites

Ciao,

allora il file che devo leggere è locale. Si trova in una cartella non accessibile dal web. Ho provato anche a leggere il file con file_get_contents() proprio come suggeritomi, ma legge sempre a metà.

 

Però, se uso strlen() per conoscere il numero di caratteri, e quindi di byte letti, corrisponde alla dimensione del file originale (in formato UNIX).

Share this post


Link to post
Share on other sites

Prova anche così:

 

$handle = fopen($path . $file, "rb");
$output = "";
while ( ($buf=fread( $handle, 1024 )) != '' ) {
   $contents .= $buf;
}       
fclose($handle);

 

Mi sembra assurdo che non vada, qual è la dimensione del file che leggi?

Che versione di PHP usi?

Sei su win (vedendo il "b" nell'apertura file direi di si, ma chiedo)?

Share this post


Link to post
Share on other sites

Sempre lo stesso problema.

 

La dimensione è di 4952 byte.

Il mio hosting utilizza PHP 5.2.10.

Comunque il sistema operativo su cui si trova è Linux, precisamente CentOS. Ho provato ad inserire quel parametro "b", solo per fare una prova.

Share this post


Link to post
Share on other sites

Dimmi che valore ti ritorna:

 

$handle = fopen($path . $file, "r");
$output = "";
$i = 0;
while ( ($buf=fread( $handle, 1024 )) != '' ) {
   $contents .= $buf;
$i++;
}       
fclose($handle);
echo $i;

Almeno si cerca di capire se esce prima del dovuto dal ciclo...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×