I think kop is confused regarding the semantics of link's argument order. The user's comment states that target should not already exist, suggesting that it is the target that is being created. As with the UNIX hardlink, ln(1), the target is the existing file. I think kop meant to say php's link() will return an error if the second parameter, the link being created, already exists.
Also, as with the UNIX system call link will fail if the link being created exists on a different filesystem.
is_writeable