I think HEAD requests should receive proper response, too. The reason behind HEAD is if a user agent wants to receive only headers without the body so if you respond to GET then you should also respond to HEAD. Especially that it is a sign of good manners for the user agent to send HEAD instead of GET because this way they inform the server (you) that they don't need the body and the server can save resources and not generate the body at all. You should not punish the requester for being kind by blocking him!
By default, PHP handles HEAD the same as GET executing the whole script and then the server just sends back the headers. You need to detect HEAD on your own if you want to skip generating content and frameworks may have mechanisms to handle them specially.
I suspect it is not good behaviour if a framework rejects HEAD requests by default. Whenever GET is allowed, HEAD should be allowed, too. I don't know which framework you use but I've tried Silex and it is handling HEAD the same way as GET.