Yo haria las comprobaciones de otra manera con un array y asi se liaria menos la cosa prueba con este codigo:
Código PHP:
// el script recibe de un campo de formulario con este nombre
//<input name="archivo" type="file">
// preparampos los datos para subir el archivo
$a_nombre= $_FILES['archivo']['name'];
$a_tipo = $_FILES['archivo']['type'];
$a_size = $_FILES['archivo']['size'];
$a_temp = $_FILES['archivo']['tmp_name'];
// comprobamos que exista un fichero, creo que se puede mejorar con isset
if($a_nombre==""){die("No ha seleccionado ningun archivo");}
//los tipos de archivos permitidos se comprueban metiendo en un array
// los mime de los archivos que tu SI aceptas subir, por ejemplo...
$tipos = array("application/pdf","application/zip","application/msword");
//comprobamos que sea uno de los archivos requeridos, mirando si esta //dentro de nuestro array $tipos
if(!in_array($a_tipo,$tipos)){ die ("No es un archivo con el formato requerido");}
// si no esta la carpeta la creamos
if (!is_dir($path)){mkdir($path, 0777);}
// designamos variables...
$archivo_ruta=$path.$a_nombre;
// Comprobar que no exista en el servidor
if(file_exists ($archivo_ruta)){die("Hay un archivo con ese nombre en el servidor.");}
// comprobamos que esta en el directorio temporal
$result = is_uploaded_file($a_temp);
if(!$result){die("No ha seleccionado ningun archivo.");}
// subir al servidor
if(!move_uploaded_file($archivo,$archivo_ruta)){die("El archivo no ha podido subirse al servidor, reportelo al administrador. Gracias");}
Revisa la sintaxis porque programar sin los colores esta complicaillo.
Espero que te sirva