2014年の「一時的なPHP修正」が2000万回インストールされ、今日ついに非推奨に

My temporary PHP fix from 2014 has nearly 20M installs. Today I'm deprecating it

2014年の「一時的なPHP修正」が2000万回インストールされ、今日ついに非推奨に

Jake A. Smith氏が2014年にAOLのCMS移行のつなぎとして書いた174行のPHPパッケージ「http_build_url」が、Packagistで約2000万回インストールされ、今も月40万回以上使われている。しかし同氏は、PHP LeagueのURIライブラリやPHP 8.5の標準URI APIなど、より良い選択肢が揃ったことを理由に、このパッケージを非推奨にすると発表した。新たなメンテナーを探すのではなく引退を選んだ背景には、xz Utilsのバックドア事件のようなサプライチェーン攻撃への懸念がある。

でも、下流の誰も検証していない新しいメンテナーが付いた広くインストールされているパッケージは、攻撃者がまさに狙うものだ。
  1. Sander_Marechal

    動く一時的な修正ほど永続的なものはない。

  2. jakeasmith

    著者です。質問があれば喜んでお答えします。http_build_url の polyfill がこんなに traction を得るとは想像もしていませんでした。12年経って、特にコミュニティや PHP 自体からの新しい選択肢を考えると、非推奨にするのは正しい動きだと感じています。

  3. swiftcoder

    > // Workaround for trailing slashes と書かれたコメントの下で、私のコードはパスに「a」を付けて常に最後のセグメントを作り、それを find-and-replace で切り取ります。パスがスラッシュで終わるとき、その最後のセグメントはただの「a」で、find-and-replace はパス内の他のすべての「a」も一緒に持っていきます。

    これは最高級。left-pad レベルの「自明な関数は自分のコードベースで実装すべきだ」

    (これは著者を貶す意味ではありません - 彼のユースケースは問題なく解決しました。しかし、その後これに依存したみんなは…)

  4. amhoab

    私たちはかつて AOL で一緒に働いていました。ここであなたを見られて嬉しいです。お元気でやっていることを願っています!

  5. zackmorris

    PHP は Web サーバー言語としてのルーツのせいで、拡張機能と PECL モジュールを間違って扱いました。マネージドホスティングでは、管理者がインストール/有効化していないため、PHP は私たちが基本的な機能と考えるものを提供しないことがよくあります。だから、こうした小さな単発パッケージが snafu を回避するために存在するのは理にかなっています。

    それでも私の一番好きな言語です。なぜなら、シェル言語に最も近いが C スタイルの構文を持っているからです(おそらく Perl 以外では。Perl は write-only 言語で読みにくく、残念ながら Ruby がいくつかのアンチパターンを受け継いでしまいました)。

    私はよく、関数型プログラミング、高階メソッド、デフォルトで const、並列性、非同期ノンブロッキング並行性ではなく同期ブロッキングなど、すべての最良のものを組み合わせた現代的なハッカー言語を書きたいと夢見ています。また、PHP 5+ で追加された参照渡しの footgun を元に戻し、配列の値渡しコピーオンライトスタイルに戻すでしょう。だからこそ、Hack のような試みを本当に支持できません。それは独自の問題を抱える新しい標準を導入するだけです。

    その洞察は、LLM が主流言語やフレームワークの限界を回避し、第一原理から仮定に挑戦してより良い基盤を築くのではなく、ということです。

  6. laruss5

    そのようなインストールベースを持つパッケージの場合、非推奨通知に移行オプションを出力する最終リリースはありますか?人々は何年も後に古い Stack Overflow の回答からそれを見つけるでしょう。

  7. AltruisticGapHN

    リポジトリはアーカイブされるべきですか?

    その機能を使う人はほとんど見かけませんが、GitHub 上の大量のリポジトリは事実上死んでいます。

  8. hk__2

    > 数字とともに、いくつかの GitHub issue がありました。その一つは、末尾にスラッシュがある URL にパスを結合すると、パスからすべての文字「a」が取り除かれるというものでした。

この日のほかの記事

2026-09-17