mi rivolgo di nuovo a voi utenti esperti di php per risolvere questa cosa che mi lascia perplesso (grazie di nuovo per la vostra pazienza e professionalità

vi posto questo pezzo di codice che dovrebbe caricare una serie di immagini jpeg o gif in locale (uso easy php 2.0) ma spesso ho problemi di immagine non caricata:


questo è il form che mostra come caricare le immagini
Codice PHP:
echo"<form name=\"uploadimm\" action=\"creazione.php\" method=\"post\" ENCTYPE=\"multipart/form-data\">";
         echo
"<table class=\"registrazione\">";

         while(
$i <= $num)
          {
            echo
"<tr>";
            echo
"    <td><p align=\"center\">alternativa num." .$i ."</p> </td>";
            echo
"    <td><input type=\"file\" name=\"alternativa" .$i ."\" size=\"50\"> </td>";
            echo
"    <td><p align=\"center\">corretta</p> </td>";
            echo
"    <td><input type=\"CHECKBOX\" name=\"yes" .$i ."\"> </td>";
            echo
"<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"800\">";
            echo
"    <td> 
 
 
 </td>"
;
            echo
"</tr>";
            
$i++;
          }
         echo
"    <input type=\"hidden\" name=\"num\" value=\"" .$num ."\">";
         echo
"    <input type=\"hidden\" name=\"mod\" value=\"" .$mod ."\">";
         echo
"<tr>";
         echo
"     <td> <input type=\"reset\" name=\"resetta\" > </td>";
         echo
"     <td> <input type=\"submit\" name=\"submit2\" value=\"invia\"> </td>";
         echo
"     <td> 
 
 
 </td>"
;
         echo
"</tr>";
         echo
"</table>";
         echo
"</form>"
questo è la parte che controlla l'inserimento e copia i file nella cartella

Codice PHP:
$i "1";
           while(
$i <= $num)
           {
             
$tmp "alternativa".$i;

             if(
is_uploaded_file($_FILES[$tmp]['tmp_name']))
             {
               if (
$_FILES[$tmp]['error'] == 2)
               {
               
// errore, file troppo grande (> 800kB)
               
die("Errore, file troppo grande: il massimo consentito è 800kB");
               }
               if (
strtolower($_FILES[$tmp]['type']) == "image/gif" || strtolower($_FILES[$tmp]['type']) == "image/jpeg" )
               {
                 
copy($_FILES[$tmp]['tmp_name'], "file_caricati/".$_FILES[$tmp]['name']) or die("Impossibile caricare il file");
                 echo 
"file caricato 
"
;
               }
               else
               {
                   echo
"il file" .$tmp ."non è formato valido (jpeg o gif) 
"
;
                   
//header("Refresh: 3; url=http://localhost/creazione.php");
                   
echo $_FILES['error'];
               }
             }
//fine controllo se è uploadato
             
else
             {
               echo
"alternativa" .$i ."non caricata 
"
;
               
//header("Refresh: 3; url=http://localhost/creazione.php");
             
}//fine non uploadato
             
$i++;
           }
//fine while immagini 
uso la funzione is_upload_file() e se ritorna false mi appare alternativa non caricata.
Il mio problema è che questo appare in modo randomico ovvero se per esempio carico 4 file 2 li carica e altri due no. :master:
La mia domanda è ci sono errori nel codice?
Ah questo potrebbe servirvi...
######php.ini####

file_uploads = On

upload_tmp_dir = "${path}\tmp\"

upload_max_filesize = 2M

post_max_size = 10M
###########

grazie davvero a tutti quelli che potranno darmi dei suggerimenti!