evidentemente il recupero delle immagini è un processo che richiede parecchio tempo (strano che ne richieda così tanto però...)..
Nella cartella ci sono SOLO immagini? O anche altri files (cartelle escluse)...

Se ti stampa solo sei foto e si blocca vuol dire che l'errore è dell'interprete, non tanto dello script, il più delle volte...

Non ci ho ragionato molto sopra, ma giusto x curiosità prova a fare girare il tuo script in questo modo:
Codice PHP:
<html>
<head>
<title>Documento senza titolo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<?php
//ecco qui che creo la tabella che serve
echo '<table width="685" cellspacing="0" cellspacing="0" align="center" border="1"><tr><td align="left">';

$init 0//questo è un valore utile per mettere 5 foto su ogni riga
if ($handle opendir('foto/')) {
while (
false !== ($file readdir($handle))) {
if (
$file != "." && $file != ".." && $file != 'thumb' && strtolower($file) != 'thumbs.db') {
$nome '';
$x 0;
while(
$file{$x} != '.') {
$nome .= $file{$x};
$x++;
}
echo 
'<a href="foto/miniature/' $file '" rel="lightbox" title="'$nome .'">
[img]foto/miniature/' 
$file '[/img]</a>';
$init++; //Ad ogni miniatura inserita il valore si incrementa
if($init 7//se il valore è minore di 7 (was 5), inserisco degli spazi e vado avanti
{
echo 
'   ';
}
else 
//altrimenti chiudo i tag di riga e ne inserisco di nuovi per una riga vuota
{
echo 
'</td></tr><tr><td align="left">';
$init 0//e ovviamente resetto il contatore
}
}
}
closedir($handle);
}

echo 
'
</td></tr></table>'
//infine chiudo la tabella


?>



</body>
</html>
è un metodo "panzer" per verificare se l'errore è nello script o nell'interprete ^^