شغّل الأمر php -v على خادم Ubuntu 24.04 محدّث بالكامل وسترى PHP 8.3.6، مع أن مشروع PHP أصدر 8.3.36. كثيرًا ما تصنّف أدوات الفحص ذلك إصدارًا قديمًا ومصابًا، وفي الغالب ليس هذا ولا ذاك، فالتوزيعة نقلت الإصلاحات إلى حزمتها الخاصة. يعرض هذا المقال فرع PHP الذي يأتي مع كل إصدار مدعوم من Debian وUbuntu، ويشرح سبب شكل أرقام الإصدارات، ويبيّن كيف تتحقق من تثبيت إصلاح بعينه.
أي إصدار يأتي مع أي PHP
يأتي كل إصدار بفرع افتراضي واحد من PHP تحدده الحزمة الوصفية php، ويحتفظ به طوال عمره. أرقام الحزم أدناه هي الموجودة في قسم التحديثات الأمنية أو التحديثات بتاريخ 31 أكتوبر 2026.
| الإصدار | الفرع الافتراضي (الحزمة php) | إصدار حزمة PHP | دعم الإصدار |
|---|---|---|---|
| Debian 12 (bookworm) | 8.2 (2:8.2+93) | php8.2 8.2.35-1~deb12u1 | دعم Debian الطويل حتى 30 يونيو 2028 |
| Debian 13 (trixie) | 8.4 (2:8.4+96) | php8.4 8.4.27-1~deb13u1 | حتى 9 أغسطس 2028، والدعم الطويل حتى 30 يونيو 2030 |
| Ubuntu 22.04 LTS | 8.1 (2:8.1+92ubuntu1) | php8.1 8.1.2-1ubuntu2.28 | الصيانة الأمنية القياسية حتى مايو 2027 |
| Ubuntu 24.04 LTS | 8.3 (2:8.3+93ubuntu2) | php8.3 8.3.6-0ubuntu0.24.04.13 | الصيانة الأمنية القياسية حتى مايو 2029 |
| Ubuntu 26.04 LTS | 8.5 (2:8.5+99ubuntu1) | php8.5 8.5.4-0ubuntu1.5 | الصيانة الأمنية القياسية حتى مايو 2031 |
| Ubuntu 26.10 | 8.5 | php8.5 8.5.9-0ubuntu2.1 | حتى يوليو 2027 |
تلفت النظر هنا أمور: لم يشحن Debian قط PHP 8.3 في إصدار مستقر، ولا يأتي أي من إصدارات Ubuntu المدعومة حاليًا بالفرعين 8.2 أو 8.4. أما Debian 11 (bullseye) الذي كان يأتي مع PHP 7.4 فقد تجاوز نهاية فترة دعمه الطويل. وإن احتجت إلى فرع لا يشحنه إصدارك، فالخيار إما إصدار أحدث من التوزيعة أو مستودع خارجي.
لماذا تبدو الأرقام قديمة
تَعِد التوزيعات المستقرة بألا يغيّر التحديث سلوك النظام سوى إصلاح المشكلة. ويشرح دليل الأسئلة الأمنية في Debian القاعدة: أجرِ أقل قدر ممكن من التغييرات، لأن المستخدمين يعتمدون على السلوك الدقيق للإصدار، لذا تُنقل الإصلاحات المعنية إلى الإصدار القائم بدل الانتقال إلى إصدار أحدث من المشروع الأصلي. ويسمح الدليل باستثناءات عندما يتعذر النقل، بالتنسيق مع فريق الأمان.
وتطبّق التوزيعتان ذلك على PHP بطريقتين مختلفتين:
- Ubuntu تحتفظ بإصدار المشروع الأصلي وتضيف الرقع؛ فقد بدأ Ubuntu 22.04 بـ PHP 8.1.2 وما زال عليه، والحزمة الآن بالمراجعة
1ubuntu2.28. وبحسب سجل التغييرات، أصلح تحديث أكتوبر 2026 في هذه المراجعة الثغرتين الحرجتين CVE-2026-109618 وCVE-2026-109619، مع أن المشروع الأصلي لم يُصدر إصلاحاتهما إلا للفرع 8.2 وما بعده. - Debian اعتاد عمليًا إدخال الإصدارات التصحيحية الجديدة من الفرع نفسه ضمن تحديثات الإصدار المستقر؛ فـ PHP في bookworm على الإصدار 8.2.35 مطابقًا للمشروع الأصلي. الفرع لا يتغير أبدًا، بل رقم الإصدار التصحيحي فقط.
كلتا الطريقتين مشروعة لإيصال إصلاحات الأمان، والنتيجة واحدة: رقم المشروع الأصلي وحده لا يخبرك إن كان النظام مرقّعًا.
كيف تقرأ رقم إصدار الحزمة
يتكون رقم الإصدار في Debian وUbuntu من ثلاثة أجزاء كحد أقصى: [epoch:]upstream-version[-revision].
2:8.2+93هو رقم الحزمة الوصفيةphp: الحقبة (epoch) 2، والفرع الافتراضي 8.2، والمراجعة 93 من الحزمة المصدريةphp-defaults.8.2.35-1~deb12u1: إصدار المشروع الأصلي 8.2.35، ومراجعة Debian رقم 1، واللاحقة~deb12u1تعني أول تحديث مبني لـ Debian 12. وعلامة التلدة (~) تأتي في الترتيب قبل أي شيء آخر، لذا يُعد هذا الإصدار أقدم قليلًا من8.2.35-1المجرد.8.1.2-1ubuntu2.28: إصدار المشروع الأصلي 8.1.2، ومراجعة Debian رقم 1، وتعديل Ubuntu رقم 2، وتحديثه الثامن والعشرون.8.3.6-0ubuntu0.24.04.13: حزّمت Ubuntu الإصدار 8.3.6 بنفسها (العلامة-0ubuntu)، و0.24.04.13هو التحديث الثالث عشر بلاحقة الإصدار 24.04.
لمقارنة إصدارين بالطريقة نفسها التي يستخدمها مدير الحزم:
dpkg --compare-versions 8.2.35-1~deb12u1 lt 8.2.35-1 && echo olderوتفسّر القواعد نفسها مفاجأة شائعة مع المستودعات الخارجية: فإصدار مثل 8.2.35-1+0~20261021.94+debian12~1 يُرتَّب أعلى من 8.2.35-1~deb12u1 الخاص بـ Debian، لذا فإضافة مستودع كهذا تستبدل حزم التوزيعة في الترقية التالية ما لم تضبط أولويته.
كيف تتحقق من تثبيت إصلاح معيّن
# installed version and where it comes from
apt policy php8.3-cli php8.3-fpm
# full package version of every PHP package
dpkg -l 'php*' | grep '^ii'
# which CVEs the installed package's updates fixed
apt changelog php8.3-cli | grep -m 20 CVE-ثم قارن ببيانات التوزيعة نفسها: متتبع الأمان في Debian (لكل حزمة مصدرية مثل php8.2) يذكر الإصدار المصلَّح لكل ثغرة ولكل إصدار، وتنشر Ubuntu صفحات حالة الثغرات وإشعاراتها الأمنية في ubuntu.com/security. إن كان إصدارك المثبت مساويًا للإصدار المصلَّح المذكور هناك أو أعلى منه فالإصلاح موجود لديك، أيًّا كان ما يعرضه php -v.
أدوات الفحص ولافتات الإصدار
كثير من أدوات الفحص الخارجية تقرأ الإصدار من الترويسة X-Powered-By وتقارنه بإصدارات المشروع الأصلي، وهذا يولّد إنذارات كاذبة مع حزم التوزيعات. خطوتان عمليتان:
- اضبط
expose_php = Offفي إعدادات PHP الخاصة بالويب كي لا تعلن الترويسة عن الإصدار أصلًا. هذا ليس إصلاحًا أمنيًا، بل ضجيج أقل ومعلومات أقل للمهاجمين. - عندما يشير تقرير إلى أن "PHP 8.x.y مصاب"، فأجب عنه برقم الحزمة وبيانات الإصدار المصلَّح من التوزيعة، لا بإعادة تثبيت PHP من مصدر آخر.
وإن كنت تستخدم خادمًا افتراضيًا من سكاي لاين كلاود، فالصور المتاحة هي Ubuntu 24.04 LTS وUbuntu 22.04 LTS وDebian 12، أي أن PHP الذي تثبته من التوزيعة هناك هو 8.3 أو 8.1 أو 8.2 على الترتيب، ويُصان عبر تحديثات الأمان الخاصة بالتوزيعة التي تطبقها أنت داخل خادمك.
ما الذي ينبغي فعله
- اعرف فرع PHP الذي يأتي مع إصدارك، والمدة التي يُدعم فيها الإصدار نفسه.
- احكم على حالة الترقيع برقم الحزمة الكامل وبإشعارات التوزيعة، لا برقم المشروع الأصلي.
- استخدم
apt changelogومتتبعات الأمان في Debian وUbuntu للتأكد من إصلاح ثغرات بعينها. - عطّل
expose_phpعلى خوادم الويب الإنتاجية. - إن أضفت مستودع PHP خارجيًا فتذكّر أن إصداراته تُرتَّب أعلى وستستبدل حزم التوزيعة ما لم تضبط أولويته.
المصادر
- packages.debian.org/bookworm/php
- packages.debian.org/trixie/php
- qa.debian.org/madison.php?package=php8.2&text=on
- qa.debian.org/madison.php?package=php8.4&text=on
- people.canonical.com/~ubuntu-archive/madison.cgi?package=php&text=on
- packages.ubuntu.com/jammy/php8.1-cli
- packages.ubuntu.com/noble/php8.3-fpm
- packages.ubuntu.com/resolute/php8.5-fpm
- packages.ubuntu.com/stonking/php8.5-fpm
- changelogs.ubuntu.com/changelogs/pool/main/p/php8.1/php8.1_8.1.2-1ubuntu2.28/changelog
- debian.org/security/faq
- debian.org/releases
- ubuntu.com/about/release-cycle
- manpages.debian.org/trixie/dpkg-dev/deb-version.7.en.html
- manpages.debian.org/trixie/dpkg/dpkg.1.en.html
- documentation.ubuntu.com/project/how-ubuntu-is-made/concepts/version-strings
- security-tracker.debian.org/tracker/source-package/php8.2
- ubuntu.com/security/cves
- php.net/manual/en/ini.core.php
- packages.sury.org/php/dists/bookworm
- cloud.alskyline.com/vps-saudi-arabia
Comments
0 total · 0 threads