grazie a entrambi per l'aiuto, ma il problema non è risolto.
poichè le funzioni da voi consigliate non presentano errori (in quanto testate e ritestate), il problema ovviamente continua a essere nel mio codice.
per togliermi ogni dubbio ho creato questa pagina

Codice PHP:
<?php
 
echo "<a href=\"?file=poba.zzz\"> Clicca qua per salvare il file txt</a>";
if(isset(
$file)) force_download($file"nomefile.txt");



function 
force_download($File$OPZNomeFile)
  {
  
$dim filesize($File);

  
// Posso forzare un nome diverso da per il file da inviare al browser
  
if ($OPZNomeFile==""$NomeFile substr($File,strrpos($File,"/")+1,strlen($File));
  else 
$NomeFile $OPZNomeFile;

  
$estensione strtolower(substr($NomeFile,strrpos($NomeFile,".")+1,strlen($File)));

  if (
$estensione == "pdf"$apptype "application/pdf";
  else if (
$estensione == "zip"$apptype "application";
  else 
$apptype "application/force-download";

  
// Forza il download via HTTP + APERTURA
  
header("Content-Type: ".$apptype."; name=".$NomeFile);
  
header("Content-Transfer-Encoding: binary");
  
header("Content-Length: ".$dim);
  
header("Content-Disposition: attachment; filename=".$NomeFile);
  
header("Expires: 0");
  
header("Cache-Control: no-cache, must-revalidate");
  
header("Cache-Control: private");
  
header("Pragma: public");
  
readfile($File);
      exit(
0);
  }
?>
ed ecco il risultato che ottengo nel file che viene scaricato

codice:
 Clicca qua per salvare il file txt
/*

contenuto file txt

*/


ovvero pare che salvi in un nuovo txt nel desktop prima il codice della pagina, e solo dopo il contenuto del file txt

:master: :master:

voi che ci capite ? dove sta l'errore ?

PS: ho provato indistintamente le due funzioni, sia quella sopra postata, che l'altra da voi consigliata .. ottenendo sempre lo stesso identico risultato ...