Supongo que usas una estrutura de directorios:
upload/
upload.php
SI es así .. si tu indicas /upload/ el / primero indica el raiz de tu servidor .. no "donde esté" que sería ./ .. En sistemas *NIX por ejemplo eso implica el "directorio raiz" del servidor entero . no de tu servidor virtual que caé tu DOCUMENT_ROOT en alguna parte de ese servidor .. así que .. si quieres usa rutas relativas pero estilo:
Código PHP:
move_uploaded_file($_FILES['userfile']['tmp_name'],"uploaded/".$_FILES['userfile']['name']);
Pero lo mejor es para el directorio destino:
Código PHP:
$_SERVER['DOCUMENT_ROOT']."uploaded/".$_FILES['userfile']['name']
Y .. asegurate bien de que tanto ese directorio .. como el de tu upload_tmp_dir . estén creados y con permisos de ejecución para todo usuario.
Un saludo,