Si perchè in realtà $_FILES['upload'] è un array che ha altre 4 chiavi:

- tmp_name: nome temporaneo assegnato dal server al file appena caricato
- name: nome del file sul client
- mime: memorizza il mimetype del file caricato
- size: memorizza le dimensioni del file caricato

Per effettuare il controllo, quindi, devi usare una di quelle chiavi. Io ti consiglio di usare tmp_name, più per chiarezza che per altro.