hola,
 
el problema quizas viene que estas usando el escript con las registers_globals en on y quizas estan en off 
tambien la funcion copy() ya esta bastante desfasada es mejor
usar la funcion move_uploaded_file() 
Tambien no es demasiado recomendable proteger el tamaño maximo del archivo solo en el formulario pues cualquier puede guardar la pagina en el pc y cambiar el formulario, permitiendo subir lo que quiera hasta que el php.ini lo permita por eso es mejor protegerlo en el servidor con el array $_FILES; 
Te dejo este modelo de codigo para que lo pruebes quizas solucionas el problema     
 Código PHP:
    $dir_htms=$_SERVER['DOCUMENT_ROOT'];
 $directorio =$dir_htms."/userfiles/";
if($_FILES['userfile']['size'] > 50000) exit("<li> archivo demasiado grande");
 
 if (!move_uploaded_file($_FILES['userfile']['tmp_name',$directorio  ,  $_FILES['userfile']['name'])) 
   exit("no se ha podido subir el archivo");
   else echo "<li> correcto se ha subido el archivo"; 
    
  un salduo