Ma restituisce un errore (errore php!) o semplicemente ti stampa "utente già registrato"?

Codice PHP:
<?php

$riga 
"caio";

$open=fopen("utenti.txt");
$file=file($open);
for(
$i=0;$i<count($file);$i++) {
   
$file[$i] = explode("|",trim($file[$i]));
   
   echo 
"
$file[$i][0] . " == $riga " . (($file[$i][0]=="$riga") ? "Si"  "No" );
   
   if (
$file[$i][0]=="$riga")
   {
      echo 
"utente già registrato";
   }
   else
   {
      echo 
"resto dello script";
   }
   
fclose($fp);

?>
Intanto con questa aggiunta ti stampa tutta la lista. Così ti guardi per quale valore non torna il confronto, e cerchi di capire il perché.

Poi....

1) Non hai chiuso la graffa del 'for'.

2) Hai un " di troppo nel confronto tra valore del primo campo e $riga.

Ciao