Do meu ponto de vista, o elemento absolutamente DETERMINANTE para a preferência de uma linguagem em detrimento da outra é, sem sombra de dúvida, a curva de aprendizagem.
PHP é uma linguagem de tipagem fraca, uma linguagem "absurdamente" flexível. Qualquer pessoa que se lance no PHP, num par de semanas consegue desenvolver soluções baseadas nesta tecnologia. Tudo código que segue o paradigma imperativo, tudo código "esparguete" onde não existe separação entre lógica e apresentação.
Para mim este é o grande ónus do PHP em relação à plataforma ASP.NET mas também o seu grande tendão de Aquiles. O que acontece (e isto é a minha experiência) é que a "flexibilidade" da linguagem, o facto de qualquer um lhe poder pegar, leva geralmente a aplicações mal estruturadas e com problemas sérios de lógica, escalabilidade, manutenção e por ai fora.
Agora alguém que pegue no Visual Studio, sem ter um conhecimento base (e teórico) do que é o paradigma de orientação por objectos, tem muitas dificuldades em pegar na tecnologia ASP.NET (em qualquer uma das suas vertentes - C#, C++, J#, VB, ...). Garanto que são muito mais horas de estudo.
Por outro lado PHP é uma linguagem livre, que corre em praticamente qualquer plataforma e convenhamos que para projectos mais pequenos é, sem sombra de dúvidas, uma solução mais barata (sem deixar de ser extraordinariamente poderosa). A quantidade de software disponível nesta linguagem é ABSURDA - existem projectos para praticamente tudo o que se possa pensar (e este facto é, para mim, o 2º grande benefício do PHP).
Agora falando em termos de escalabidade, trabalho em equipa e o próprio IDE, ASP.NET (do meu ponto de vista) vai à frente.
Em relação à performance\desempenho, não esquecer que PHP é uma linguagem
interpretada, enquanto todo o código desenvolvido sobre a plataforma ASP.NET é
compilado. Para aplicações pequenas, não há-de haver grande diferença, para aplicações maiores penso que ASP.NET seja uma tecnologia mais escalável em termos de performance.
Outra grande diferença é que código PHP serve para a web (bem, o GTK permite fazer umas "brincadeiras", mas ninguém leva o projecto a sério), enquanto quem desenvolve sobre a plataforma .NET muito rapidamente se adapta ao desenvolvimento de outro tipo de aplicações.
Dito tudo isto, sou um fã incondicional de PHP (programo todos os dias em PHP, não ASP.NET).
Adoro software livre, fora ambientes muito específicos, não sou grande fã de Windows. Conforta-me saber que quando "esbarro" com uma parede, saber de antemão que no Google de certeza que encontro alguém que também já "esbarrou" com esta parede e que já encontrou solução .
Adoro os diferentes "Universos", aplicações, tecnologias que se foram desenvolvendo sobre e à volta do PHP. Adoro sistemas UNIX. Gosto de não ter de declarar variáveis!
Agora num ambiente empresarial de larga escala não sou cego ao ponto de não entender o porquê da utilização da plataforma .NET sobre outras soluções...