I haven't seriously looked at PHP in years having long ago joined the Perl camp. I know I know shame on me. However from that very perspective it has seemed to me that php's biggest problem is the addons. Yes Pear and some of the other frameworks alleviate it somewhat but really PHP looks and acts like a thrown together language. Just look at the function list in the documentation. The various libraries it uses are binary addons . Their is little consistency in useage, naming conventions and almost no namespacing used in it. I'll quote Jeroen van der Meer = "

PHP is basically a collection of extensions which are all put together to form what we have now. However, these extensions change and so does the collection.
This is almost completely different from the way every other language does it. You might be able to make the case that Java is like this too but even java uses namespacing and most of the libraries are written in java itself. In a way PHP's worst problem has been it's community of users and the language maintainers enablement of that community. The perl community may seem a bit gruff to a php user but getting a module featured in CPAN takes a little bit more work than it seems getting an addon into the official php distribution took. This actually fosters the bad coding practice most perl and ruby users associate with php coders. PHP may finally be growing up but it's like taking a rebellious child who hasn't been disciplined in years and sending him to bootcamp. He'll have to be dragged kicking and screaming obscenities but hopefully the result will be worth it."