Mire varias veces tu codigo y la verdad no veo nada raro cerca de
move_uploaded_file()
lo unico que se me ocurre es que la variable
llegue vacia.
Podes comprobar su contenido con la funcion
Lo que hace es volcar el contenido como si fuera un echo, para saber que tiene adentro.
Saludos