2014年の174行PHPが2000万インストール、作者が廃止へ
原題: My temporary PHP fix from 2014 has nearly 20M installs. Today I'm deprecating it
なぜ重要か
一時的な個人ツールがインフラ規模に拡大する現象は、OSS依存チェーン全体のセキュリティリスク管理の難しさを改めて示している。
2014年にAOLのCMS移行用として書いた174行のPHPポリフィル「http_build_url」が、Packagistで累計約2000万回インストールされていることが判明した。作者のJake A. Smith氏は2026年9月15日、PHP 8.5の標準URI APIやPHP LeagueのURIライブラリが普及した現在、新たなメンテナへの引き継ぎをせず非推奨として正式に廃止することを表明した。月間インストール数はいまだ40万件以上に上る。
Jake A. Smith氏がAOLのCMSをPHP 5.2から5.3へ移行する際、削除された「pecl_http」拡張の`http_build_url()`関数を補完するために作成したのがこのパッケージだ。「1〜2年で誰かがもっと良いものを作るだろう」と考えてPackagistに公開した一時的な回避策が、12年後に約2000万インストールという数字を記録するとは本人も想定していなかった。
普及の背景にはComposerだけでなく、WordPress向け多言語プラグイン最大手のWPMLが直接バンドルしていたことがある。WPMLは150万サイト以上への導入を公表しており、さらにドメイン名ライブラリ「idna-convert」経由でフランス語CMS「SPIP」にも同梱され、DebianおよびUbuntuのパッケージにまで含まれている。
廃止を決断した直接のきっかけは、GitHubのissueで発見されたバグだ。末尾にスラッシュが付いたURLにパスを結合すると、そのパス中の全ての「a」が消えてしまうという不具合が長年見過ごされていた。原因はトレーリングスラッシュ対策として末尾に「a」を付加し、その後find-and-replaceで除去する処理が、パス内の他の「a」まで削除していたためだ。
Smith氏はこのバグを受け、修正継続・第三者への引き継ぎ・放置の三択を迫られた。しかし彼が選んだのは廃止だった。理由は二つ。まず、PHP 8.5が標準のURI APIを搭載しPHP LeagueのURIライブラリも成熟した今、このシムを延命させることは不要な移行先への依存を温存するだけだという判断。次に、広く普及したパッケージを実績の見えない新メンテナへ渡すことは、xz Utilsバックドア事件が示したような攻撃のリスクになりかねないという懸念だ。
パッケージは引き続きインストール可能だが、今後バグ修正は行わない。ユーザーにはPHP LeagueのURI libraryまたはPHP 8.5標準のURI APIへの移行を推奨している。