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