I've created several upload scripts before and they all use the /tmp directory. From what I learned, that is just the way things work.
Try writing a simple script that uses the phpinfo(); function when $_POST[submit] has been set.
What you are looking for is the $_FILES array:
//'userfile' is the variable name from the form
$tmploc=$_FILES['userfile']['tmp_name']; //temporary name of the file when it is in the /tmp directory
$fname=$_FILES['userfile']['name']; //the actual name of the file on the client
$fsize=$_FILES['userfile']['size']; //file size $ftype=$_FILES['userfile']['type']; //file type
$ferror=$_FILES['userfile']['error'] //reports errors
$fpath="/some/path/to/the/final/destination/".$fname; //the location where your uploaded file will go (including file name). you can designate another $fname if you want to
//add some code to make sure the path exists or not, or that you won't be over-writing a file that you don't want to
if(copy($tmploc,$fpath)) echo "Good job";
else echo "Error... blah blah blah";
//$fpath is the location of the file on the server, which is going to be different than the actual url path
I hope this helps.