La teoría o descripción de la función es como dices ..
Lo que no sé si controlando el mensaje de error ya sea por "error_Reporting()" o con el operador @ eliminas el hecho de presentar el error (lo digo por qué dices que te marca un "Warning" (no un "Notice" o "Fatal" ..)
Prueba:
Código PHP:
if (@unlink(.....)){
// se eliminó el archivo
} else {
// no se eliminó
}
Igualmente es buena práctica lo que ya haces, verificar si existe el archivo antes de pretender eliminarlo. Si luego tienes permisos de escritura/borrado .. teóricamente la función te debería devolver "False" y a su vez mostrar el "Warning" .. si lo ocultas con @ para ese caso concreto sería lo ideal (así controlas tu mensaje de error por tu parte).
Un saludo,