mettici un po' del tuo però dai...

prova a mettere un po' di debug nella funzione:

codice:
$filter = ".jpg";
// directory dove cercare
$directory = "public/photo"; 
function readDirRecursive($directory, $filter) {
echo "funzione richiamata con i paremtri:
";
echo "directory:".$directory."
";
echo "filter:".$filter."
";
$d = dir($directory);

  if ($d) {
  while($entry=$d->read()) {
    $ps = strpos(strtolower($entry), $filter);
    if ($ps !== false) {
       $items[] = $entry;
    } elseif(is_dir($entry) && $entry != "." && $entry != '..')) {
       
       echo "l'entry :".$entry." è una directory, richiamo nuovamente readDirRecursive con i parametri (".$entry.",".$filter.");
";

       $items = array_merge($items, readDirRecursive($entry, $filter));

    } else {
       echo "l'entry :".$entry." non soddisfa il filtro e non è una directory
";
    }
  } else {

    echo "Non riesco a leggere la directory : ".$directory."
";

  }

  $d->close();
  
  sort($items);
  return $items;
} 

$items = readDirRecursive($directory, $filter);

echo "ecco la lista delle foto contenute nella cartella";

//
for($i=0; $i<sizeof($items); $i++) {
echo " nome della foto".$items[$i]."
";
}
Ora prova a vedere che ti stampa la funzione.