PHP is utter crap. Well, I'm being a bit mean about PHP, since people use it to do useful things, but it's just about the most poorly designed language that is frequently used today. It's basically a retarded version of C++, and that's only a bit more powerful and versatile than assembly language.
PHP is quite hardly crap, seriously. I've seen sooooo many worse languages out there (perl being one of them) that it's not funny.
As a programmer, I've had experience with a TON of languages and designs, from perl (ick!) to php to C to BASIC to html (if you want to even call THAT a language), and I'd say php, hands down. Why? Probably because I'm more C oriented (I spent some 6 years working on a C based RPG). The day I found php/mysql, I just loved it, seriously!
To each his own, though. The "best scripting language" doesn't exist,it's more like what is your
favorite, and, for that, I'd have to say hands down, it would be php.
Perl, to me, is too permissions related, and too messy to deal with
C is alright, but it's not really convenient to design web apps with C (though it can be done)
HTML, well, the jury's still out there. It's INCREDIBLY basic and can't do much of anything. Like I said, is it even a language

.
ASP might be nice, but the problem there is the reliance on Windows servers. If I want to program something (say, a billing client, forum, CMS, etc), I want it to be able to run on ANY piece of hardware/server, with very little hardware requirements. I can't really say that ASP is that good
Java/Tomcat? Too server intensive. I've seen too many java based apps that freak out a server. Not good. I'm not saying this can't be done with other languages (php/perl), but for the most part what I've seen says that it's not good.
Of course, as I said, it's all in taste, and what you're using for. If you're after mysql/db functionality, then php is probably THE easiest language to get that done in.