Geri Dön
2014'ten kalma geçici PHP çözümü 20 milyona yakın kurulum topladı — artık kullanımdan kaldırıldı
SiTech AI Team3 წთ. საკითხავი

2014'ten kalma geçici PHP çözümü 20 milyona yakın kurulum topladı — artık kullanımdan kaldırıldı

Jake A. Smith 2014'te AOL'un CMS'i için 174 satır PHP yazdı. Packagist'te 20 milyona yakın kurulumdan sonra paketi kullanımdan kaldırdı ve geliştiricileri PHP 8.5'in yerleşik URI API'sine yönlendirdi.

Jake A. Smith 2014'te AOL'un içerik yönetim sistemi için geçici bir çözüm olarak 174 satır PHP yazdı. Kodu Packagist'te yayımladı, belki aynı yamaya başkasının da ihtiyacı olur diye. On iki yıl sonra kod neredeyse 20 milyon kez kuruldu ve 15 Eylül'de yazar paketi kullanımdan kaldırılmış olarak işaretledi.

Geçici bir yama

İş, AOL'un CMS'inin PHP 5.2'den 5.3'e yükseltilmesiydi ve bunun bir parçası da http_build_url() adlı işlevi sağlayan pecl_http eklentisinin 1. sürümünün bırakılmasıydı. Bir içerik yönetim sistemi çok sayıda URL ile uğraşır ve bu sistem söz konusu işlevi, Smith'in dokunmak istemediği onlarca yerde çağırıyordu. O da işlevi yeniden yazdı: kendi http_build_url() tanımını yalnızca gerçeği henüz yoksa tanımlıyordu, böylece eski kod hiçbir şeyin değiştiğini fark etmedi. O dönemde Composer yeni yeni yaygınlaşıyordu, bu da yamayı paylaşmayı kolaylaştırdı; yazar bir-iki yıl idare edeceğini düşünüyordu.

Bu ciddi bir kurulum sayısı

Geçici olmadı. Yazıya eklenen Packagist istatistikleri toplam 19.864.271 kurulum ve son 30 günde 401.308 kurulum gösteriyor; günlük kurulum sayısı 2014'teki neredeyse sıfırdan 2026'da günde yaklaşık 13.000'e çıkmış durumda. Composer tablonun yalnızca bir parçası: WordPress'in önde gelen çok dilli eklentisi WPML bu kodu doğrudan kendi kod tabanında taşıyor ve 1,5 milyondan fazla sitede kurulu; alan adı kitaplığı idna-convert ise ona bağımlı, böylece kod Fransız CMS'i SPIP'in kaynak koduna girmiş ve Debian ile Ubuntu paketlerine kadar ulaşmış.

Yıllar sonra pakete döndüğünde Smith bir hata da buldu: sonunda eğik çizgi bulunan bir URL'ye yol eklemek, yoldaki her a harfini siliyor. Kod, sondaki eğik çizgiler için yazılmış bir geçici çözüm yorumunun altında yola fazladan bir a ekliyor ki her zaman kesilecek bir son parça olsun, ardından onu bul-değiştir ile kesiyor. Yol eğik çizgiyle bittiğinde bu değiştirme diğer bütün a harflerini de siliyor. 2021'de paket için yeni bir bakımcı istemişti; üç kişi talip oldu, ancak araya beklenmedik bir aile kaybı girdi, konuyu takip etmedi ve paket yıllarca ilgisiz kaldı.

Devretmek yerine kullanımdan kaldırmak

Smith paketi ne kendi canlandırmayı ne de başkasına devretmeyi seçti. PHP League'in URI kitaplığı yıllardır topluluğun cevabı, PHP 8.5 ise standartlara uygun bir URI API'sini doğrudan dilin içinde sunuyor; ikisi de 2014'ten kalma 174 satırlık bir yamadan iyi, paketi sürdürmek ise herkesin yapması gereken geçişi yalnızca geciktirirdi. Yaygın kurulan bir paketi, aşağı akışta kimsenin denetlemediği bir bakımcıya devretmek, ona göre saldırganların tam olarak aradığı şey. Paket kurulmaya devam edecek ama yeni düzeltme almayacak; a harfi hatası için bile, çünkü destekleyecek kimse yokken tek satırlık bir değişikliğin bile beklenmedik sonuçları olabilir. Nasıl geçileceğini README anlatıyor. Dipnot: AOL, CMS'ini geçici yamadan hiç ayırmadı — kod orada platform 2020 civarında kapatılana kadar çalıştı.

SSiTech

SiTech — AI destekli web geliştirme

Hızlı ve modern web siteleri kuruyor, AI'yı gerçek iş akışlarına taşıyoruz. Projeniz veya sorunuz mu var? Yardımcı olmaktan mutluluk duyarız.