Hay dos puntos clave para el éxito de PHP: el momento y el enfoque en el alojamiento compartido.
Al principio la web era estática. Los servidores web solo podían distribuir HTML pregenerado. Obviamente, esto no era suficiente después de un tiempo, por lo que en 1993 el equipo NCSA amplió su servidor web (el antecesor de Apache httpd) con una tecnología llamada CGI que permitía llamar a programas específicos desde el servidor web que podía generar HTML (u otro contenido) sobre la marcha. Esto fue genial ya que la gente podía hacer todas las cosas. Un lenguaje comúnmente utilizado en ese momento para ese propósito fue Perl. Perl es un lenguaje sólido en el procesamiento de texto que es una propiedad clave para manejar datos de solicitud HTTP y producir HTML. Así que la gente lo usó.
Pero hubo un problema: para todas y cada una de las solicitudes del servidor web para ejecutar un programa externo, Perl tuvo que iniciar y ejecutar el script. Esto causó bastante dolor de cabeza. Una solución fue mod_perl que viene a continuación. 1997. mod_perl es un módulo para el servidor web Apache que integra el intérprete de Perl directamente en el proceso del servidor web, por lo que no fue necesario un arranque adicional.
Pero nuevamente, este enfoque tenía un problema: mod_perl era extremadamente poderoso y tenía acceso a la configuración completa del servidor. No podría usar un servidor para alojar a varios clientes independientes, ya que podrían dañar fácilmente a las otras personas, ya sea a propósito o por accidente. Y ahí es donde vino PHP.
PHP se creó de una manera que podría ejecutarse como módulo de Apache (por lo tanto, no tiene el resultado de inicio para cada solicitud) pero proporciona un entorno de nada compartido entre las solicitudes. Una vez que se realizó una solicitud, toda la información se perdió y una solicitud posterior a otro host virtual se atendería de forma independiente. PHP también ofreció funciones para restringir el acceso (safe_mode, open_base_dir). Con esa elección arquitectónica, las empresas podrían instalar PHP en su servidor y proporcionar a los clientes acceso FTP (o similar) para cargar sus archivos y, por eso, alojar a muchos clientes en una sola máquina sin mucho trabajo. Esto provocó una competencia que llevó a precios bajos para el alojamiento basado en PHP, lo que convierte a PHP en una plataforma ubicua.
Además, PHP tenía algunos beneficios sobre Perl, como permitir mezclar código HTML y PHP o acceso directo a variables de solicitud (ver también register_globals) que en Perl era más difícil (análisis personalizado o dependencia de CGI.pm) que a los desarrolladores les gustaba.
Otro aspecto que hizo exitoso a PHP en esos días fue un buen soporte en Windows. Conseguir que Perl u otros idiomas trabajaran en Windows fue difícil, pero en ese momento muchos desarrolladores en los que utilizaban Windows en casa y la virtualización o los contenedores no eran una cosa todavía. PHP se ejecutó fácilmente en Windows, por lo que la gente podría usarlo para el desarrollo y luego empaquetar los archivos y desplegarlos en Linux. Con Perl, por ejemplo, tendría que obtener la distribución correcta de Perl y luego verificar qué módulos están disponibles en todos, etc.
¿Qué pasa con otros idiomas? Los lenguajes compilados como C o C ++ nunca obtuvieron tracción, ya que las secuencias de comandos sirven mejor al mercado de rápido desarrollo. Java existía, pero las máquinas virtuales de Java requerían muchos más recursos y alojamiento compartido de la manera en que PHP no era factible. La inversión en hardware fue mucho mayor. ASP (como el antecesor de ASP.Net) estaba vinculado a la plataforma Windows, limitándola a organizaciones que ya ejecutan Windows y que no temen los costos de licencia, y nuevamente no tienen soporte de alojamiento compartido.
Se produjeron otras tecnologías diferentes, pero fueron comerciales (Cold Fusion o Netscape Server con JavaScript del lado del servidor) limitando su alcance o no estuvieron fuera de su alcance hasta que llegó Ruby-on-rails, que probablemente fue el primer entorno recibió mucha atención, pero en ese momento PHP ya era muy popular con una gran comunidad y un software bien establecido (como Wordpress o Drupal), lo que hacía difícil competir, especialmente porque el desarrollo de PHP nunca se detuvo y aún continúa.