@saj,
saj wrote:why can't you say " I've been knowing him for 2 years"
Because it is not an ongoing action. You know him or you don't. The ongoing action is "get to know". So you can say "I have been getting to know him for 2 years."
Quote:and " I have been studying english since five years"
"Since five years" should be "since five years ago" otherwise it doesn't refer to a time in the past. When modified like that it makes sense, but it sounds strange.
A better way to put it is: "I have been studying English for five years."