The reason I personally prefer PHP for web development is its simplicity.
It is true that literally anyone can pick it up and mash up some code, which has its merits and downfalls.
However, that does not mean the language itself is bad and that you can’t do something with it that some other (web-based) language can.
But if you look at some things that involve ASP.NET - you have to have windows based hosting. Windows OS costs money and require constant patching.
You also had to have windows + .NET framework (again, you have to cash out some money to have windows in the first place).
You are also tied in to .NET framework, which someone love and others despise.
You were also steered towards using MSSQL (even though you CAN use other databases), however MSSQL costs money.
I remember 5 years ago when I encountered a topic at one of programming forums where the OP had problems with resizing images in his newly-created ASP.NET application. It turned out, in order to enable image manipulation - you had to have a plugin of some sort (that cost money).
PHP has GD library or you can hook in into ImageMagick via OS calls or imagick class (on the other hand, you could do the same on Windows based machine if sys_ calls weren’t blocked somehow).
Bottom line is - in order to start with PHP programming you have to pay 0 for software fees.
In order to host php based website, you need some ridiculously small amount of money, and you get the MySQL db, ImageMagick and what not in order to start a small blogging website or forums.
In order to grasp simple programming concepts - you have to follow simple tutorials available both at php.net or Sitepoint or any other website.
So the bottom line is - it is very cost effective and very easy to start with php.
Of course, many people are interested in just doing something rather than doing it properly, hence - we get terrible scripts that get popular.
However, that’s not language’s weakness.
The other usual argument that’s pro ASP.NET is the execution speed that trumps PHP’s execution speed, which is usually based on terrible examples.
There are ways of caching PHP’s OP code, plus there are ways to design applications in such way that PHP doesn’t have to handle huge amounts of data.
Pure logic implies that if the amount of data and complexity of calculations increase, the execution time increases, no matter the language.
I won’t get into the whole object model of languages available, that’s a topic for itself.
If I had to start out again, I’d definitely do it with PHP and not some Microsoft product that I have to pay with my soul in order just to have simple “hello world” application.