controlla che move_uploaded_file non fallisca.
Codice PHP:
<?php

    
if(is_uploaded_file($_FILES['file']['tmp_name'])){
        
        if(
move_uploaded_file($_FILES['file']['tmp_name'], "img/" $_FILES['file']['name'])){
        
        echo 
"success";
            }else{
                echo
'error move';
            }
        
    }else{
        
        echo 
"error";
    }

    echo 
"<pre>";
    
print_r($_FILES);
    echo 
"</pre>";

?>
La destinazione può essere un path relativo, ma in ogni caso php deve avere i permessi di scrivere nella porzione di filesystem sulla quale vai ad operare nei limiti di quanto impostato anche dall'open_basedir via Apache o php.ini
http://php.net/manual/en/ini.core.php

Se hai disabilitato la visualizzazione dei warnings, non ti viene segnalato il "permission denied". move_uploaded_file restituisce true o false ma solo se non ha i permessi di scrivere sulla cartella di destinazione restituisce false + il warning
http://it.php.net/manual/en/function...oaded-file.php
Controlla il tuo php.ini, imposta error_reporting = E_ALL, chiudi & salva & riavvia apache


In fase di sviluppo (ma pure in produzione...) non usare mai "@" davanti alle funzioni, serve a sopprimere gli errori, che non vuol dire che non ce ne siano. se non li vedi non li correggi.
http://php.net/manual/en/language.op...rorcontrol.php