# حل مؤقت من 174 سطر PHP كُتب عام 2014 ثُبّت 20 مليون مرة، وصاحبه يعلن إيقافه

> **المغزى:** كود لم يثبّته فريق بنفسه قد يكون موجودًا في مشروعه عبر حزمة أخرى أو إضافة قديمة، ومعه خلل بقي سنوات دون أن يلاحظه أحد.

- المصدر: المغزى (https://almaghza.com/a/2026-09-17-php-http-build-url-deprecated/)
- التاريخ: 6 ربيع الآخر - 17 سبتمبر 2026 (2026-09-17)
- القسم: برمجيات
- الوسوم: PHP، WordPress، المصادر المفتوحة

أعلن المطور Jake A. Smith يوم 15 سبتمبر 2026 إيقاف حزمة PHP صغيرة كتبها عام 2014 كحل مؤقت. الحزمة 174 سطرًا، ثُبّتت من Packagist نحو 20 مليون مرة، ولا تزال تُثبّت أكثر من 400,000 مرة شهريًا.

بدأت القصة حين كان Smith يرقّي نظام إدارة المحتوى في AOL من PHP 5.2 إلى 5.3، وفقد في الترقية دالة اسمها http_build_url. فكتب نسخة منها بنفسه ونشرها، على أساس أن تبقى سنة أو سنتين حتى يظهر بديل أفضل. لكن الحل المؤقت عاش 12 سنة.

وانتشرت الحزمة إلى ما هو أبعد من مستخدميها المباشرين. فإضافة WPML للغات في WordPress تحمل هذا الكود داخلها، وتقول إنها مثبتة على أكثر من 1.5 مليون موقع. كما دخلت حزم Debian وUbuntu عبر مكتبة idna-convert ونظام SPIP.

## الخلل

تحت تعليق نصه "Workaround for trailing slashes"، يضيف الكود حرف a في نهاية المسار حتى يوجد جزء أخير يمكن قصّه، ثم يحذفه بعملية بحث واستبدال. لكن حين ينتهي المسار بشرطة مائلة، يصبح الجزء الأخير هو حرف a وحده، فتحذف عملية الاستبدال معه كل حرف a آخر في المسار.

بقي هذا الخلل سنوات دون أن يلفت انتباه أحد.

والجانب العملي أن هذا الكود قد يكون موجودًا في مشاريع لم يثبّته أصحابها بأيديهم، بل جاء ضمن حزمة أخرى أو داخل إضافة مثبتة منذ زمن. والبدائل التي يذكرها الكاتب هي واجهة URI API المدمجة في PHP 8.5، ومكتبة PHP League URI.

## المصادر

- [مقال Jake A. Smith الأصلي](https://jakeasmith.com/blog/http-build-url/)
- [الحزمة على Packagist](https://packagist.org/packages/jakeasmith/http_build_url)
- [مكتبة PHP League URI](https://uri.thephpleague.com/)
- [توثيق URI API في PHP 8.5](https://www.php.net/manual/en/book.uri.php)
