2014年のPHP応急処置、2000万回インストールで廃止

मूल शीर्षक: My temporary PHP fix from 2014 has nearly 20M installs. Today I'm deprecating it

यह क्यों महत्वपूर्ण है

OSS依存チェーンの脆弱性と、一時的な修正が長期間広範囲に使われ続けるリスクを示す実例として重要。

Jake A. Smithが2014年にAOLのCMS移行用に書いた174行のPHPポリフィル「http-build-url」が、Packagistで約2000万回インストールされた。毎月40万回以上のインストールが続く中、2026年9月15日に同氏は正式にdeprecated(非推奨)とした。

2014年、Jake A. SmithはAOLのCMSをPHP 5.2から5.3へ移行する際、pecl_http拡張のバージョン1が提供していた「http_build_url()」関数が使えなくなる問題に直面した。CMSの数十箇所でこの関数が呼ばれていたため、彼は174行の代替実装を書き、本物の関数が存在しない場合のみ定義されるように設計した。「1〜2年で誰かがもっと良いものを作るだろう」と思ってPackagistに公開したが、12年後の現在も月40万回超のインストールがある。

普及の背景は複雑だ。WordPress向け多言語プラグインの最大手WPMLが直接バンドルしており、150万サイト以上で稼働。ドメイン名ライブラリ「idna-convert」も依存しており、そこからフランスのCMS「SPIP」、さらにDebianやUbuntuのパッケージにも流入している。

コードには重大なバグも含まれていた。末尾にスラッシュが付くURLのパスを結合すると、パス内のすべての「a」が消えてしまう問題だ。ワークアラウンドとして「a」を末尾に付けて後で削除する実装が原因で、長年気づかれなかった。

Smith氏は「メンテナンスを続ける」「第三者に引き継ぐ」「放置する」という選択肢をすべて退けた。PHP Leagueの「URI」ライブラリやPHP 8.5の標準URI APIが既に存在する。また、審査されていない新しいメンテナが広く使われるパッケージを引き継ぐことは、xz Utilsバックドア事件のような攻撃者の標的になるリスクがあると指摘した。パッケージは今後も動作するが、新たな修正は行われない。

स्रोत

jakeasmith.com — मूल लेख पढ़ें →