La carpeta destino (donde mueves tu archivo) ha de tener permisos de escritura/lectura al menos (777 o algo ménos de permisos en tu CHMOD ..)
Pero, .. para permitirte acceder a tu directorio /tmp de ese servidor (en general desde donde PHP esté configurado para almacenar los archivos que suben por HTTP) debe igualmente tener permisos de lectura al menos para el usuario en concreto que usa Apache (o PHP) ...
También hay restricciones como el de la directiva del php.ini (en un phpinfo() de puede ver también) ...
open_basedir ...
Esa directiva .. si apunta a tu directorio asignado en ese servidor (para tu sitio
www..) no podrás con PHP "salir" al /tmp por ejemplo a "buscar" ese archivo (hacerle el copy() ...).
En teoría ..la función move_uploaded_file() está diseñada para acceder al directorio /tmp (al que esté definido como upload_tmp_dir en php.ini) para mover el archivo hacia su destino definitivo una vez subido por HTTP vía los formularios comunes ..
Un saludo,