
حل PHP مؤقت من 2014 يقترب من 20 مليون تثبيت — وقد أصبح الآن مهملًا
كتب جيك أ. سميث 174 سطرًا من PHP عام 2014 كحل مؤقت لنظام إدارة المحتوى لدى AOL. وبعد قرابة 20 مليون تثبيت من Packagist أعلن إهمال الحزمة ووجّه المطوّرين إلى واجهة URI الأصلية في PHP 8.5.
في عام 2014 كتب جيك أ. سميث 174 سطرًا من PHP كحل مؤقت لنظام إدارة المحتوى في AOL، ثم نشر الكود على Packagist خشية أن يحتاج أحد آخر الترقيع نفسه. وبعد اثني عشر عامًا ثُبّت الكود قرابة 20 مليون مرة، وفي 15 سبتمبر أعلن مؤلفه إهمال الحزمة.
ترقيع مؤقت
كان الأمر يتعلق بترقية نظام إدارة المحتوى في AOL من PHP 5.2 إلى 5.3، وكان جزء من الترقية التخلي عن الإصدار الأول من إضافة pecl_http التي كانت توفر دالة باسم http_build_url(). فنظام إدارة المحتوى يتعامل مع عدد كبير من الروابط، وكان هذا النظام يستدعي تلك الدالة في عشرات المواضع التي لم يرغب سميث في لمسها. فأعاد كتابتها: تعريفه الخاص للدالة كان يُنشأ فقط إن لم تكن الدالة الأصلية موجودة، وهكذا لم يلاحظ الكود القديم أي تغيير. وكان Composer في بداية انتشاره، ما سهّل مشاركة الترقيع، وتوقّع سميث أن يكفي الحل لعام أو عامين.
هذا عدد كبير من عمليات التثبيت
لم يكن الحل مؤقتًا. تُظهر إحصاءات Packagist المرفقة بالمقال 19,864,271 عملية تثبيت إجمالًا و401,308 خلال الثلاثين يومًا الأخيرة، مع ارتفاع التثبيت اليومي من نحو الصفر في 2014 إلى قرابة 13,000 يوميًا في 2026. وComposer جزء من الصورة فقط: فإضافة WPML، وهي الإضافة متعددة اللغات الرائدة لووردبريس، تضمّ الكود داخل قاعدة شفرتها وتعمل على أكثر من 1.5 مليون موقع، كما تعتمد عليها مكتبة أسماء النطاقات idna-convert، وبهذا وصل الكود إلى شفرة نظام SPIP الفرنسي وانتهى مطبوعًا في حزم دبيان وأوبونتو.
وعند عودته إلى الحزمة بعد سنوات اكتشف سميث خطأً أيضًا: إلحاق مسار برابط ينتهي بشرطة مائلة يحذف من المسار كل حرف a. فتحت تعليق يشرح حلاً بديلاً للشرطات المائلة، يضيف الكود حرف a إضافيًا إلى المسار حتى يبقى دائمًا مقطع أخير قابل للقطع، ثم يقطعه بالبحث والاستبدال. وعندما ينتهي المسار بشرطة مائلة، يزيل ذلك الاستبدال كل حرف a آخر أيضًا. وفي 2021 طلب مشرفًا جديدًا للحزمة، فتقدم ثلاثة أشخاص، لكن فقدًا مفاجئًا في العائلة أوقف الأمر، ولم يتابع، وبقيت الحزمة دون رعاية سنوات.
الإهمال بدل التسليم
لم يختر سميث إحياء الحزمة بنفسه ولا تسليمها إلى غيره. فمكتبة URI التابعة لـ PHP League هي جواب المجتمع منذ سنوات، وPHP 8.5 يقدّم الآن واجهة URI متوافقة مع المعايير داخل اللغة نفسها؛ وكلاهما أفضل من ترقيع من 174 سطرًا يعود إلى 2014، كما أن الاستمرار في صيانة الحزمة لن يؤخر سوى الانتقال الذي ينبغي أن يقوم به الجميع. وتسليم حزمة واسعة الانتشار إلى مشرف لم يدقق أحد في شفرته، كما يرى، هو تحديدًا ما يبحث عنه المهاجمون. ستظل الحزمة قابلة للتثبيت لكنها لن تحصل على إصلاحات جديدة، بما في ذلك خطأ حرف a، لأن تغييرًا من سطر واحد قد تكون له نتائج غير مقصودة دون أي دعم متاح؛ ويشرح ملف README كيفية الانتقال. أما الخاتمة فأن AOL لم تنقل نظامها أبدًا بعيدًا عن الترقيع المؤقت، بل عمل الكود هناك حتى إغلاق المنصة نحو عام 2020.
SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي
نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.