PHPの成功には2つの重要なポイントがあります。タイミングと共有ホスティングへの焦点です。
当初、Webは静的でした。Webサーバーは事前に生成されたHTMLのみを配信できましたが、これはしばらくすると明らかに十分ではなかったため、1993年にNCSAチームはWebサーバー(Apache httpdの前身)をWebサーバーから特定のプログラムを呼び出すことができるCGIと呼ばれる技術で拡張しましたその場でHTML(または他のコンテンツ)を生成できます。人々がすべてのことができるので、これは素晴らしかったです。その目的で当時よく使用されていた言語はPerlでした。Perlは、HTTP要求データを処理し、HTMLを生成するための重要なプロパティであるテキスト処理に強い言語です。それで人々はそれを使いました。
しかし、問題がありました。Webサーバーが外部プログラムを実行する必要のある要求ごとに、Perlはスクリプトを初期化して実行する必要がありました。これはかなりの頭痛を引き起こしました。解決策はmod_perlがcaに来ることでした。1997. mod_perlは、Apache WebサーバーがPerlインタープリターをWebサーバープロセスに直接埋め込むためのモジュールであるため、追加の起動は必要ありませんでした。
しかし、このアプローチにも問題がありました。mod_perlは非常に強力で、完全なサーバー構成にアクセスできました。1台のサーバーを使用して複数の独立したクライアントをホストすることはできません。それらは他の人に簡単に損害を与える可能性があるからです-故意または偶然によるものです。そして、そこがPHPの登場です。
PHPは、Apacheモジュールとして実行できるように構築されています(したがって、各リクエストに対してスタートアップヒットがありません)が、リクエスト間で何も共有されない環境を提供します。要求が完了すると、すべての情報が失われ、別の仮想ホストへの後続の要求は個別に処理されます。PHPは、アクセスを制限する機能(safe_mode、open_base_dir)も提供しました。そのアーキテクチャの選択により、企業はサーバーにPHPをインストールし、顧客にFTP(または同様の)アクセスを提供してファイルをアップロードし、多くの顧客を多くの作業なしで単一のマシンでホストできます。これにより、PHPベースのホスティングの価格が安くなり、PHPが遍在するプラットフォームになりました。
さらに、PHPはPerlと比べていくつかの利点がありました。HTMLとPHPのコードを混合したり、開発者が好むPerlでより難しかった(カスタム解析またはCGI.pmへの依存)要求変数(register_globalsも参照)への直接アクセスが可能です。
当時PHPが成功したもう1つの側面は、Windowsでの優れたサポートです。Perlやその他の言語をWindowsで動作させるのは困難でしたが、当時は自宅でWindowsを使用して仮想化やコンテナを使用することはまだ多くの開発者でした。PHPはWindowsで簡単に実行できるため、開発にPHPを使用し、ファイルをパックしてLinuxにデプロイできます。たとえば、Perlでは、正しいperlディストリビューションを取得してから、どのモジュールが利用可能かなどを確認する必要があります。
他の言語はどうですか?CやC ++などのコンパイルされた言語は、スクリプティングが急速に発展する市場により良いサービスを提供するため、決して注目を集めませんでした。Javaは存在していましたが、Java仮想マシンには、PHPがサポートする方法でより多くのリソースと共有ホスティングが必要でした。ハードウェアへの投資ははるかに多かった。ASP(ASP.Netの前身)はWindowsプラットフォームにバインドされており、既にWindowsを実行しており、ライセンスコストを恐れず、共有ホスティングサポートがない組織に限定されていました。
生産されたが商用であった他のさまざまなテクノロジー(Cold Fusionまたはサーバー側JavaScriptを備えたNetscape Server)がリーチを制限するか、Ruby-on-railsが登場するまでリーチアウトしませんでした。ただし、その頃にはすでにPHPは大規模なコミュニティや定評のあるソフトウェア(WordpressやDrupalなど)で非常に人気があり、特にPHPの開発が止まることなく継続しているため、競争が難しくなっています。