Originalmente inviato da
rainz
mikipari per caso stai cercando di leggere un file php?
perchè ho un problema simile al tuo, ho creato il seguente codice per leggere i file presenti sul mio sito:
Codice PHP:
$file = fopen("./index.php", "rb");
$content = fread($file, 8192);
echo "contenuti: $content";
fclose($file);
echo non mi restituisce nulla, se però gli do in pasto un file html funziona...
Molto probabilmente il file index.php contiene del codice PHP.
Quando recuperi il sorgente, dato che accedi localmente e a un livello più basso di http, lo script ti restituisce il codice PHP non ancora interpretato.
Facendo un paragone al tuo script: è come scrivere in un file HTML: <?php echo "prova"; ?>, il browser lo ignorerà ma se guardi nel sorgente, noterai che qualla stringa è presente.
Ora dipende da quello che vuoi fare: ottenere il sorgente PHP non interpretato o ottenere l'output che genera php interpretando il codice.
Per la prima scelta, il tuo codice va bene, ma potresti modificarlo in:
Codice PHP:
// primo metodo:
$file = file_get_contents("./index.php");
echo htmlentities($file);
// secondo metodo: imposti l'header del file a txt.
header('Content-Type: text/plain');
echo file_get_contents('./index.php');
Per la seconda scelta invece si tratta di qualcosa di più complesso.
Se vuoi puoi utilizzare require/include e catturare l'output con i buffer ( ob_start ... ) oppure fare una richiesta HTTP a quel file:
Codice PHP:
// primo metodo: usi i buffer
ob_start();
require './index.php'; // se il file si trova in altre directory, assicurati di cambiare la directory attuale con chdir
$output = ob_get_clean();
echo $output; // sorgente HTML generato da php
// secondo metodo: fai una richiesta HTTP
echo file_get_contents('http://tuosito/index.php'); // con le restrizioni server2server sbloccate