All these examples will not work if the php script has no write access within the folder.
Although you may say this is obvious, I found that in this case, $zip->open("name", ZIPARCHIVE::CREATE) doesn't return an error as it might not try to access the file system but rather allocates memory.
It is only $zip->close() that returns the error. This might cause you seeking at the wrong end.