PHPの脆弱性ニュースで知るべき真実。世界の70%を支える言語の歴史と進化

PHPと聞いて何を想像するか?
PHPというプログラミング言語をご存じだろうか?
現在(2026/10/24)、サーバーサイドのプログラミング言語が判明しているすべてのウェブサイトのうち、約70%で利用されているPHP(ソースはW3Techs)。皆さんが見ているウェブサイトの大半、その裏側でPHPが動いている。
そんなPHPは、2026/10/21「重大な脆弱性が2点見つかった」というニュースによって、内閣総理大臣のXのポストによる影響もあって、ITに詳しくない人にも名前が広まった。プログラミング言語のみならず、システムという言葉にあまり聞きなじみのない人は、もしかすると、PHPに対して良くない印象を抱いたかもしれない。
IT従事者にとってプログラミング言語の脆弱性の発見は、深刻度の大小はあれど、少なからず経験や知見はあるものだ。我々ITエンジニアと悪いハッカーとの戦いは、常に劣勢を強いられている。たった1つの脆弱性を出してしまえば、そこを突かれる。つまり我々には「脆弱性など存在しない完璧」が求められるが、膨大で複雑に及ぶシステムその全ての穴を塞ぎきることは不可能だ。人間はミスをするし、全てを管理することは様々な要因で妨げられるからだ。
また、ちょっとITをかじったという方は、もしかすると「PHPは古い」というイメージを持っているかもしれないが、実は、PHPはJavaと同じ1995年に誕生している。単純な時間比較ではJavaとPHPの間に差はない。しかし、Javaを古いと語る方は少ないように感じる。
JavaだろうとPHPだろうと、どちらも現役の最前線で動いているプログラミング言語である。どちらも目的を達成するために使う手段の一つであり、結局はそれを使う人次第で毒にも薬にもなる。そんなプログラミング言語PHPについて、歴史を振り返ることで知見を増やして、PHPに対するイメージを刷新していく。
PHPの歴史
以下にPHPの歴史についてまとめていく。PHPにはバージョンがあるため、そのバージョン毎にどういった更新がなされたかを整理していく。
PHPの始まり
ラスマス・ラードフ(Rasmus Lerdorf)が、自身のオンライン履歴書へのアクセス履歴を調べるためにC言語で書いたCGIプログラム群「Personal Home Page Tools (PHP Tools)」がが1995年6月に公開されたのが起源である。その後、データベースと連携して動的なウェブページを作る機能(Form Interpreter)が追加され、「PHP/FI」として公開されたのが、1995年後半から1996年にかけてとなっている。
つまりJavaのように会社が開発したツールではなく、個人が開発したツールが元となっている。しかも「HTMLの中に少し処理を埋め込むための簡易ツール」として始まったため、誰でも簡単に書けてしまうことによるセキュリティの甘さなどの問題があった。それらを解消するためのバージョンアップが繰り返された。
現在のPHPの基礎PHP3
1997年、イスラエルの大学生だったアンディ・ガトマンズ(Andi Gutmans)とゼーブ・スラスキー(Zeev Suraski)が中核となる構文解析エンジン(コードを読み取って実行する仕組み)を完全にゼロから書き直した。この時に名称が再帰的頭字語である「PHP: Hypertext Preprocessor」に変更されている。「PHPは何の略?」と気になる方がいるかもしれないが、その答えがこちらである。
「HTMLの中に少し処理を埋め込める」という利便性は変えずに、世界中の開発者が独自のモジュール(拡張機能)を簡単に追加できるアーキテクチャになったことが、大きな功績である。これにより、MySQLやOracleといった多様なデータベースや、様々なプロトコルと簡単に連携できるようになった。このタイミングで簡易ツールからプログラミング言語になったと言っていいだろう。
現在も続くエンジンの基礎PHP4
2000年、アンディとゼーブによってPHPを実際に動かすエンジン「Zend Engine 1.0」が開発された。これにより処理速度とメモリ効率が飛躍的に向上し、従来のPHPでは想定されていなかった双方向通信が求められる大規模な商用サイトにも対応できるようになった。
もう少し深掘りして説明すると、従来のエンジンはテキスト(HTML)を上から順番に読み込み、PHPの命令を見つけるたびにその場で解釈して実行するというものだった。この解釈の処理に時間がかかるため、何度も同じ処理をする必要がある場合、その度に何度も解釈をすると膨大な時間がかかってしまうというデメリットがあった。それを「Zend Engine 1.0」は、一度一括して全てを解釈してメモリに保持することで解決した。
人間で例えるならば、「英語の本を1文ずつ日本語に翻訳しながら朗読する」のと、「最初にすべて日本語に翻訳した台本を作ってから、それをスラスラと朗読する」くらいスピードに差が出る。
オブジェクト指向が導入されたPHP5
2004年、エンジンが「Zend Engine 2.0」にアップグレードされたことでオブジェクト指向が本格導入された。オブジェクト指向について語ると長くなるので省くが、現在でモダンとされている言語はオブジェクト指向としてしまって問題ない。その現代のモダンさはここで導入された。
スキップされたPHP6
Unicode(UTF-16)への対応するために開発されていたが、以前のバージョンよりも処理速度が極端に遅くなり、メモリ使用量も激増してしまった。そうして開発に時間がかかっている間に、世の中のWeb標準は「UTF-8」で完全に定着してしまったため開発自体が無駄になってしまったため、PHP6は欠番としてPHP7へ。
ブレイクスルーのPHP7
2015年、これまでと比較して実行速度が2倍以上になり、メモリ使用量が半分から3分の1に激減した「最大の技術的ブレイクスルー」と呼ぶべき革命が起きたエンジン「Zend Engine 3.0」が導入された。この進化の最も凄かった点は、「開発者が自分の書いたコードを一切書き換えなくても、サーバーのPHPを7にアップデートするだけでサイトが爆速になる」という点である。
世界のWebサイトの大部分を占めるWordPressも、PHP 7環境にするだけで処理能力が倍増したため、当時「他の新しい言語と比べて遅い」と言われ始めていたPHPの評価を完全に覆し、現在に至る高いシェアを維持する決定打となったのだ。
現代のPHP8
2020年、これまでの「Zend Engine」をベースにしつつ、新たにJITコンパイラが組み込まれた。これによって画像処理、暗号化、機械学習、複雑な数学的計算など、「CPUをフル回転させる処理(CPUバウンド)」においてのみ、圧倒的な速度(数倍〜数十倍)を叩き出せるようになった。これまでは画像処理や暗号化、機械学習などは想定していなかったプログラミング言語から、そういったことも可能になったというバージョンアップになっている。
また、過去の曖昧で緩いルールを完全に捨て去り、厳格で近代的な言語に生まれ変わるための「破壊的変更(後方互換性のない変更)」を大量に行っていることも大きな特徴だ。例えば、PHP7では警告が出るだけで実行はできたコードについて、全て実行が止まるようになっていたり、PHP 7の段階で「今後は使わないでください」と警告されていた古い関数や機能が、PHP 8で物理的にごっそりと削除されている。
PHPの脆弱性対応の話題で、古いバージョンで書いていたPHPのバージョンアップの必要に駆られた。それによってサービス停止を余儀なくされたこともあった。その要因の一つが、PHP7からPHP8へのバージョンアップ対応があまりに大変だからということもあると思われる。
まとめ
歴史を振り返ることで、世間が抱く「PHP=古い・セキュリティが甘い」というイメージと、現在のPHPがいかにかけ離れているかがお分かりいただけたかと思う。脆弱性のニュースが大きく取り上げられるのは、「世界のWebサイトの70%を支えるインフラ」だからであって、過去の緩さを捨ててでも進化を続ける現役言語であることは揺るがない。
| 項目 | 過去(世間のイメージ) | 現在(PHP 8以降の実際の姿) |
|---|---|---|
| ポジション | HTMLに埋め込む簡易ツール | JITコンパイラも備えた最前線のモダン言語 |
| ルールの厳格さ | 誰でも書けるが、曖昧で緩い | 過去の負の遺産を捨て、厳格で安全な設計を強制 |
| 処理速度 | スクリプト言語特有のもっさり感 | Zend Engine 3.0以降の爆速化+CPUバウンド処理も可能に |
| 脆弱性へのスタンス | 穴だらけで危険 | バージョンアップのハードルを上げてでも、モダンで強固な環境への移行を推進 |