Sembrerebbe come dici un problema di permessi. Quando uplodi il file manualmente il file eredita i permessi del tuo utente ftp, mentre creandolo con php viene limitato ai permessi dello user apache immagino. Hai verificato se le funzioni chmod() e chown() sono abilitate?