cambia ... readfile($enlace);
por ... include($enlace);
ya que es obvio... andabas leyendo el código fuente, no ejecutandolo...
Edito: NOOOOOOO.... esto estaria mal!!!
asi deberia ser...
Código PHP:
<?php
$enlace = "lista.php";
// primer ejecutamos....
ob_start();
include($enlace);
$content = ob_get_contents();
ob_end_clean();
header ("Content-Disposition: attachment; filename=lista.txt");
header ("Content-Type: application/octet-stream");
header ("Content-Length: ".strlen($content));
echo $content;
?>
NOTA:
me explico.... necesitabas evaluar el PHP, ejecutarlo....
pero entonces...
content-length no seria exacto al hacer el filesize($enlace)
por eso... bufferizamos, y ya capturado el resultado... medimos la longitud real