I think there are some things wrong with it, actually. Probably you can write good code with it, but I don't think it is encouraged, and it is very easy to screw up.
I don't think so. PHP just doesn't have the right abstractions needed to create truly good code. Having some OO support is better than having none at all, but it's clear that the authors of PHP never bothered to try any object system other than Java's -- easily the worst object system of any language. (Also, I would love to know why a language with no type checking has Java-style interfaces. What is the point?)
Combine that with the lack of anonymous functions, closures, continuations, lexically-scoped variables, and so on, and you are stuck compromising your design to get something that is actually implementable. It is sort of like a brilliant novelist that is used to writing with his laptop, but is given some napkins and a dull pencil instead. Since he's a great author, he'll probably make something good -- but just give him his laptop back already.
PHP has done one thing right in it's history; they made it extremely easy to deploy.
(My own preference is not to use PHP whenever possible for personal projects - but I run my own servers and am fairly familiar with mod_perl, FastCGI and Apache internals).