You choose the web language for the job. If you want to support a large user base that run linux then PHP is better. If you're looking at commercial customers then ASP.NET maybe the the better way to go. The reason I say this is recently a business guy was doing adoing a presentation on programming and such. Someone asked about web development and he said Java and ASP.net are king. Now someone asked why PHP wasn't included and the guy told everyone that PHP was made by HP and they are a computer maker primariliy not software. This was infront of some computer science students and a lot of business students. Now this example holds true for a lot of businesses to they think PHP is either owned by HP, owned by a bunch of kids or something crazy like that.
.Net runs on Linux via the Mono project Likewise .Net can be combined with MySQL for a more budget but powerful solutions. Combin .Net with MySQL and the cost of hosting is rarely more than a few dollars a year more than *nix hosting - our host is $5 a year more for windows over linux
ASP.NET offers lots of tools and stuff which can be very handy but also extremely annoying and limiting. ASP.NET is easier to get a simple website up and quicker to do. PHP however will probably give you a better understanding of coding without having half the code done for you. Also it will be easier to make small adjustments to the code and layout. My preference is PHP, however it depends a lot on what you intend to do with your skills. Having said all that don't rule out jsp, thats pretty cool too.
This is a heated question. The answers you're going to get are going to be akin to: Who's better, liberals or conservatives? PHP has a far easier learning curve, and the function set is rich. Which means you can call a single function in PHP to perform something that will probably take a few lines of code in .NET. Keep in mind that native php function are written in C & C++, so the one line of PHP makes it far quicker than 7 lines of .NET. Someone also made a mention of Generics in .NET. I don't see why anyone needs Generics in an interpreted language. The only reason you need generics to begin with is to cope with a strongly typed language like C#. I'm obviously biased.