cioa a tutti!

Non riesco a capire da cosa dipenda questo errore, penso sia un problema di memoria o addirittura di cpu (intesi come risorse...). Premetto che uso Easyphp 1.8 quindi con phph 4.3

Devo indicizzare delle cartelle e sottocartelle, il tutto memorizzato su file di testo.Lo script crea tre array, con centinaia di elementi.. nello script c'è sicuramente un errore,ma lo vedo per una frazione di secondo, perchè poi mozilla mi fa vedere la pagina di errore...ecco il codice:

Codice PHP:
<?php
function list_directory($dir
       {
       
$file_list '';
       
$stack[] = $dir;
       while (
$stack
           {
           
$current_dir array_pop($stack);
           if (
$dh opendir($current_dir)) 
               {
               while ((
$file readdir($dh)) !== false
                   {
                   if (
$file !== '.' AND $file !== '..'
                       {
                       
$current_file "{$current_dir}/{$file}";
                       if (
is_file($current_file)) 
                           {
                           
$file_list[] = "{$current_dir}/{$file}";
                           } 
                       elseif (
is_dir($current_file)) 
                           {
                           
$stack[] = $current_file;
                           
$dirs[]=$current_file;
                           }
                       }
                   }
               }
           }
       return 
$dirs;
   }


function 
list_files($dir
       {
       
$file_list '';
       
$stack[] = $dir;
       while (
$stack
           {
           
$current_dir array_pop($stack);
           if (
$dh opendir($current_dir)) 
               {
               while ((
$file readdir($dh)) !== false
                   {
                   if (
$file !== '.' AND $file !== '..'
                       {
                       
$current_file "{$current_dir}/{$file}";
                       if (
is_file($current_file)) 
                           {
                           
$file_list[] = "{$current_dir}/{$file}";
                           } 
                       elseif (
is_dir($current_file)) 
                           {
                           
$stack[] = $current_file;
                           
$dirs[]=$current_file

                           }
                       }
                   }
               }
           }
       return 
$file_list;
   }

$list_dir=list_directory("archivio/Templates/");
$list_files=list_files("archivio/Templates/");
$gruppo=array();
$sottogruppo=array();
$ID=array();
foreach (
$list_dir as $key=>$cartella)
  {
  
$blocco=explode("/",$cartella);
  
  if (
$key>&& $blocco[0]!= $gruppo[($key-1)])
    {
    
$ID[]=codice(rand(1000,10000));
    
$gruppo[$key]=$blocco[0];
    }
if(
count($blocco)>=2)  
  
$sottogruppo[$blocco[0]]=$blocco[1];
  }


function 
codice($codice)
  {
  global 
$ID;
  if (
in_array($codice,$ID))
    
codice ($codice);
  else
    return 
$codice;
     
  }
$line="";
$indice=fopen('archivio.dwd','w');
foreach (
$ID as $key=>$codice);
  {
  
$line.=$ID[$key]."|".$gruppo[$key];
  foreach (
$sottogruppo as $sottokey=>$value)
    {
    if (
$sottokey==$gruppo[$key])
      {
      
$line.="|".$sottogruppo[$sottokey];
      }
    }
  
$line.="\n";
  }
fwrite($archivio,$line);
fclose ($archivio);
echo 
"<pre>";
print_r($gruppo);
print_r($sottogruppo);
echo 
"</pre>";
?>
qualòcuno sa dirmi da cosa dipenda? ed eventuali impostazioni?? grazie mille