Yo te recomiendo utilizar move_uploaded_file()
Un Ejemplo:
Código PHP:
$TamPostUpload = $tamano_archivo + $TotalOcupado;
//Verifico Extenesiones y que el fichero no pese mas de 2 MB
if(!((strpos($tipo_archivo, "gif") || strpos($tipo_archivo, "jpeg") || strpos($tipo_archivo, "png")) && ($tamano_archivo <= 2097152)))
{
echo "La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .gif - .jpg - .png<br><li>se permiten archivos de 2 MB máximo.</td></tr></table>";
}
elseif($TamPostUpload >= $MaxEspacioUsuario)
{
//se indica al usuario que no puede dar de alta el usuario porque ya existe ese login registrado.
echo "No dispone de espacio para subir mas fotografias";
}
else
{
if (move_uploaded_file($HTTP_POST_FILES['fichero']['tmp_name'], $ruta . $ID_Usuario . "/" . $seccion . $nombre_archivo)){
echo "El archivo ha sido cargado correctamente.";