Il y a deux points clés pour le succès de PHP: le timing et l'accent mis sur l'hébergement mutualisé.
Au début, le Web était statique. Les serveurs Web ne pouvaient distribuer que du HTML pré-généré, ce qui n'était évidemment pas suffisant après un certain temps.En 1993, l'équipe NCSA a étendu son serveur Web (le prédécesseur d'Apache httpd) avec une technologie appelée CGI qui permettait d'appeler des programmes spécifiques à partir du serveur Web. qui pourrait générer du HTML (ou tout autre contenu) à la volée. C'était super car les gens pouvaient tout faire. Un langage couramment utilisé à cette époque à cette fin était Perl. Perl est un langage puissant dans le traitement de texte qui est une propriété clé pour gérer les données de requête HTTP et produire du HTML. Les gens l'ont donc utilisé.
Mais il y avait un problème: pour chaque demande, le serveur Web devait exécuter un programme externe, Perl devait initialiser et exécuter le script. Cela a causé pas mal de maux de tête. Une solution était mod_perl à venir ca. 1997. mod_perl est un module pour le serveur Web Apache incorporant l'interpréteur Perl directement dans le processus du serveur Web, donc aucun démarrage supplémentaire n'était nécessaire.
Mais encore une fois, cette approche avait un problème: mod_perl était extrêmement puissant et avait accès à la configuration complète du serveur. Vous ne pouvez pas utiliser un serveur pour héberger plusieurs clients indépendants car ils pourraient facilement nuire aux autres personnes - que ce soit exprès ou par accident. Et c'est là que PHP est venu.
PHP a été construit de manière à pouvoir fonctionner en tant que module Apache (donc sans avoir le hit de démarrage pour chaque requête) mais fournit un environnement de partage rien entre les requêtes. Une fois la demande effectuée, toutes les informations ont été perdues et une demande ultérieure adressée à un autre hôte virtuel serait traitée indépendamment. PHP offrait également des fonctionnalités pour restreindre l'accès (safe_mode, open_base_dir). Avec ce choix architectural, les entreprises pourraient installer PHP sur leur serveur et fournir aux clients un accès FTP (ou similaire) pour télécharger leurs fichiers et ainsi héberger de nombreux clients sur une seule machine sans trop de travail. Cela a provoqué une concurrence menant à des prix bon marché pour l'hébergement basé sur PHP, faisant de PHP une plateforme omniprésente.
De plus, PHP avait quelques avantages par rapport à Perl, comme permettre de mélanger du code HTML et PHP ou un accès direct aux variables de demande (voir aussi register_globals), ce qui en Perl était plus difficile (analyse personnalisée ou dépendance à CGI.pm) que les développeurs aimaient.
Un autre aspect qui a fait le succès de PHP à l'époque était un bon support sous Windows. Il était difficile de faire fonctionner Perl ou d'autres langues sur Windows, mais à l'époque, de nombreux développeurs n'utilisaient pas encore Windows à la maison et la virtualisation ou les conteneurs. PHP fonctionnait facilement sous Windows afin que les gens puissent l'utiliser pour le développement, puis emballer les fichiers et déployer sur Linux. Avec Perl par exemple, vous devriez obtenir la bonne distribution de Perl, puis vérifier quels modules sont disponibles, etc.
Et les autres langues? Les langages compilés comme C ou C ++ n'ont jamais eu de succès car les scripts servent mieux le marché en développement rapide. Java existait, mais les machines virtuelles Java nécessitaient beaucoup plus de ressources et un hébergement partagé dans la façon dont PHP le supportait était difficilement réalisable. L'investissement dans le matériel a été beaucoup plus élevé. ASP (en tant que prédécesseur d'ASP.Net) était lié à la plate-forme Windows, la limitant aux organisations qui exécutent déjà Windows et qui ne craignent pas les coûts de licence, et là encore pas de support d'hébergement partagé.
Différentes autres technologies ont été produites, mais elles étaient commerciales (Cold Fusion ou Netscape Server avec JavaScript côté serveur) limitant leur portée ou ne sont pas hors de leur portée jusqu'à l'arrivée de Ruby-on-rails, qui était probablement le premier environnement recevant beaucoup de attention, mais à cette époque, PHP était déjà très populaire auprès d'une grande communauté et de logiciels bien établis (comme Wordpress ou Drupal), ce qui rend la concurrence difficile - d'autant plus que le développement de PHP n'a jamais cessé et se poursuit.