win o linux?
sotto win non puoi gestire i chmod..
SEMBRA che sei sotto win, però posso sbagliare..
lo dico perchè il commento
// percorso cartella relativo $cartella_upload="../public/";
public è la tipica cartella "scrivibile" di win..

però invece la cartella dove eseguire l'upload è
$cartella_upload="/public_html/sgfoldup/".$username;

un'altra cosa:
if(file_exists($cartella_upload)==false)
per controllare che esista una cartella si usa is_dir, non file_exists..

vedi se posso esserti stato di aiuto