1) Both are open source. This not only means that they are free, but you have no license hassles (e.g. license audits, no paperwork), the vendor does not have the same hold over you 9, etc. - all the usual advantage sof open source.
2) Both are installed by most hosting companies, even cheap ones.
3) Both are easy to install on your own server. Most versions of Linux make installation and configuration very easy, and there are easy installers for Windows and Mac as well. You can install and configure Apache, PHP and MySQL in one go, as though they were a single program.
4) PHP is easy to learn, has extensive libraries, and there is a lot of existing open source software taht you can tweak.
5) PHP is easy to develop with an eliminates a lot of subtle bugs, at a cost to performance, by processing every request completely separately - all data in memory is lost between pages.
6) MySQL is fast, if you use its default MyIASM tables. It sacrifices data integrity for speed, but that is a reasonable compromise for web apps - you would not want to use it for a banking system though!
7) lots of people know both, there is excellent documentation for both.
That said, there is a lot of stuff done in other languages and other databases. There is a lot of good web software (CMSs and the like) written in Perl, Python, Ruby, Java etc., there are people plenty of people who use MSSQL or Postgres for websites.
I am currently considering doing something using Python and Postgres, but only because I would only want to install it on a dedicated server. If I wanted to write something that I hoped would be widely used, it would have to be MySQL, and probably PHP.