Se fallisce la cancellazione del file dovrebbe darti un warning che spiega perché..
se non te lo da metti
error_reporting(E_ALL);
prima dell'unlink(), e vedi un po'...