Do not call PHP a framework. Ever. And as someone who writes both Python and PHP, calling PHP a crap language is beyond stupid.
A typical install of PHP has thousands of builtin functions, most oriented towards the internet or web. All the HTTP stuff is abstracted away and handled internally(post, get, cookies, etc, we've grown to think this is a normal part of a language these days).
Sterling Hughes, one of the core developers once called PHP a framework on his old blog(which isn't up anymore) and compared it to .NET. His conclusion was basically that PHP sucked compared to .NET but he chose his words more delicately given that he is a core developer.
Just because it's mostly procedural and not MVC or buzzword compliant does not mean it's not a framework.
Rails and its clones do not define what a framework is, they are just specific types of a newer breed of frameworks, and are higher level.
As for PHP, the language, being sucky:
PHP doesn't have anonymous functions(although it has a builtin function for it like it does everything else which works crappily and gives headaches), closures , namespaces(PHP6 will/does I think), module support, and it has such a limited syntax that it makes writing code in it akin to fucking in a straight jacket.
You can't really do shit with the syntax and constructs of the language itself, compared to other languages, you have to rely on functions to do almost everything.
Wouldn't it be nice to do this:
doSomething(explode(',' $line)[1])
instead of:
$list = explode(',' $line);
doSomething($list[1])
OR
list(, $second, ) = explode(',' $line);
doSomething($second)
OR some other cumbersome combination of functions(yeah i know list() is really a construct)
Hell in Javascript you could do this:
doSomething(line.split(',')[1]);
In python you could do the same or even make a slice of the returned object by using only a few more characters.
In javascript you could make doSomething a self executing anonymous function or make a new split function that is a closure, or a closure that just uses the split method of the string object.
Besides being dynamically typed(something obviously not too unique to PHP), what about the language of PHP is cool?
I guess it depends if you count all the builtin functions as being part of the language. This is probably something that's debatable. I really don't think of all the functions as being part of the language, especially since most of them aren't even implemented in PHP, they're implemented in C.
PHP has a good library and automatic internal handling for building web apps, which you could call a web framework,
as many people do.