SamuelGG, intenta lo siguiente:
1- Activa todos los mensajes de error
2- Guarda el archivo en vez de enviarlo al navegador, pero debes guardarlo en una carpeta que tenga permisos de escritura; si se crea correctamente, entonces estás enviando una salida previa que es la que impide que se inicie la descarga
xfxstudios:
1- Si está especificando un charset utf8 no hay necesidad de usar utf8_decode()
2- En lugar de variable, él especifica el nombre del archivo directamente; no es lo mismo, pero es igual