mmm No tiene nada que ver con el error que planteas .. pero, si usas el array $_FILES ..¿ por qué usas en algún punto de tu código $HTTP_POST_FILES ?
Código PHP:
if (is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name']))
{
Por lo demas .. el código parece bueno y según comentas funciona correctamente ...
Creo que deberías preguntar en el foro "Sistemas Operativos - Linux" para que te orienten sobre los pemisos de directorios/usuarios ....
Comentales el tema de como queda el archivo por FTP y por un Upload HTTP (via PHP ..)
Un saludo,