Semplice: devi mettere al posto dei caratteri < e > i corrispondenti html (&lt; e &gt; ), nel seguente modo:
codice:
&lt;?php
codicevario
?&gt;
in questo modo < e > verranno scritti senza essere interpretati come parte di un tag: otterrai scritto
codice:
<?php
codicevario
?>
senza che <?php e ?> vengano interpretati come tag html.

Altrimenti puoi semplicemente utilizzare una funzione php che converte al posto tuo tutti i caratteri speciali html (come < e >) in caratteri che non vengono interpretati.
La funzione è htmlspecialchars();

La pagina che visualizza il codice potrebbe dunque essere così:
Codice PHP:
<h1>questo è il codice:</h1>
<code>
<?php
$path
="pagina.php";//La path della pagina di cui visualizzare il codice
$rows=file($path);//Estraggo il contenuto del file diviso in righe
$file=implode('\n',$rows);//unisco tutte le righe con la stringa acapo
$output=htmlspecialchars($file);//Converto i caratteri speciali
$output=str_replace('\n','
'
,$output);//Sostituisco l'acapo con il corrispondente html
echo $output;//Scrivo il codice finale
?>
</code>
Spero di esserti stato utile!