The problem is that unlink() isn't working in the first place, not that the code is crashing. Even with @, the file will still be there -- just any error message that the file wasn't there (or that something went wrong trying to delete it) will be suppressed.
I suspect that something has that file open while you're trying to delete it. Also confirm that PHP (probably = owner) can write to the file and to the directory.
Perhaps the conditional statement is holding the file in cache and won't release it to unlink until the conditional statement is done with it.