عندما يحاول WordPress الوصول إلى عنوان URL عبر HTTPS (تحديثات، فحص الإضافات، استيراد...) قد يظهر ما يلي : « cURL error 60: SSL certificate problem: unable to get local issuer certificate »تعني هذه الرسالة أن مكتبة cURL (المستخدمة بواسطة PHP) لم تتمكن من التحقق من سلسلة الشهادة مع سلطات الثقة المحلية — إما لأن الخادم لا يرسل الشهادات الوسيطة، أو لأن PHP/cURL لا يمتلكان ملف CA مُحدّثًا.

للاطلاع : cURL — رموز الأخطاء (PHP).

قبل البدء — المتطلبات المسبقة

  • الوصول إلى cPanel (لتثبيت الشهادة أو تعديل إعدادات PHP) — أو إمكانية فتح تذكرة لدى الدعم إذا كنت على استضافة مشتركة.
  • الوصول إلى محرر MultiPHP INI، أو إلى ملف php.ini php.ini أو إلى إعدادات PHP في استضافتك (إذا احتجت لضبط curl.cainfocurl.cainfo).
  • الوصول إلى SSH/الطرفية أو جهاز محلي لتشغيل curl curl و openssl openssl لأغراض التشخيص (اختياري لكنه موصى به).
  • نسخة احتياطية حديثة (الملفات + قاعدة البيانات) قبل أي تعديل على الشهادة أو على تكوين PHP.

1) تشخيص سريع (ما الذي يجب التحقق منه أولاً)

  1. أعد إنتاج الخطأ داخل WordPress (مثلاً: تحديث أو استيراد) وسجل الرسالة الكاملة والوقت.
  2. اختبر من الطرفية (استبدل example.com example.com باسم نطاقك) :
    curl -Iv https://example.com
    ابحث خصوصًا عن السطور «Server certificate» و «Verify return code». إذا أعاد cURL «SSL certificate problem» أو «unable to get local issuer certificate»، فقد فشلت عملية التحقق من السلسلة.
  3. فحص أكثر تفصيلاً للسلسلة المرسلة من الخادم :
    openssl s_client -showcerts -connect example.com:443
    يعرض الإخراج الشهادة (أو الشهادات) المرسلة من الخادم. إذا كانت الشهادة الوسيطة مفقودة، فالسلسلة غير مكتملة.
  4. تحقق من توقيت الخادم: ساعة نظامية غير مضبوطة تمنع التحقق من TLS. (على استضافة مشتركة، يجب طلب ذلك من الدعم.)

إذا أظهر الفحص سلسلة غير مكتملة (أو شهادة موقعة ذاتيًا)، انتقل إلى القسم التالي لتصحيح التثبيت على مستوى الخادم/cPanel.

2) تثبيت/تصحيح سلسلة الشهادات في cPanel (تثبيت كامل)

إذا لم يرسل الخادم السلسلة الكاملة (غياب الشهادة الوسيطة)، فسيَرفض العديد من العملاء — بما في ذلك PHP/cURL — الاتصال. يوفر cPanel أداة لتثبيت CRT والمفتاح الخاص وCABUNDLE.

الوصول إلى قسم 'SSL/TLS Certificates' من لوحة تحكم cPanel
افتح Security → SSL/TLS في cPanel لإدارة الشهادات.
  1. في cPanel : Security → SSL/TLS → Manage SSL Hosts (أو Install an SSL Website حسب الإصدار).
  2. اختر النطاق. استخدم «Autofill by Domain» إذا كانت شهادتك موجودة بالفعل، أو ألصقها يدويًا :
    • Certificate (CRT) — شهادة النطاق.
    • Private Key (KEY) — المفتاح الخاص المرتبط.
    • Certificate Authority Bundle (CABUNDLE) — الجهة أو الجهات الوسيطة المقدَّمة من مرجع الشهادات (CA) (السلسلة الكاملة).
  3. أكد التثبيت. بعد التثبيت، تحقق من حالة الشهادة وأعد اختبار اتصال TLS (الأمر curl -Iv).
نموذج تثبيت شهادة SSL مع النطاق وحقول الشهادة في cPanel — سلسلة الشهادات والتركيب
ألصق CRT والمفتاح الخاص وCABUNDLE إذا لزم الأمر، ثم ثبّت الشهادة.

إذا كنت تستخدم AutoSSL (Let's Encrypt)، أعد تشغيل AutoSSL من خلال cPanel/WHM أو اتبع دليلنا : كيفية تثبيت شهادة SSL من Let's Encrypt على cPanel؟للاطّلاع على خطوات التثبيت العامة عبر cPanel، راجع أيضًا كيفية تكوين شهادة SSL على cPanel؟

بعد تصحيح السلسلة، أعد الاختبار فورًا باستخدام curl -Iv وفي WordPress.

3) تحديث قائمة سلطات الشهادات الموثوقة (CA) وضبط إعدادات PHP

حتى لو أرسل الخادم السلسلة الكاملة، يجب أن يكون لدى PHP/cURL إمكانية الوصول إلى قائمة سلطات الشهادات الموثوقة (ملف cacert.pem أو مستودع شهادات النظام). في بعض البيئات (مثلاً بيئة Windows محلية أو عند تكوين PHP دون وصول إلى مستودع شهادات النظام)، يجب تحديد هذا الملف صراحةً في إعدادات PHP :

الوصول إلى محرر MultiPHP INI من لوحة تحكم cPanel
استخدم محرر MultiPHP INI (إذا كان متاحًا) لإضافة التعليمة curl.cainfo.
  1. على VPS/خادم بصلاحيات root: حدّث مستودع شهادات النظام (الحزمة ca-certificates على Debian/Ubuntu/CentOS). سيؤدي ذلك إلى تحديث ملف CA العام الذي يستخدمه OpenSSL/cURL.
  2. إذا اضطررت للتدخل بنفسك (في استضافة تتيح لك تعديل php.ini) :
    1. حمّل ملفًا محدثًا cacert.pem في دليلٍ آمنٍ (مثلاً /home/username/certs/cacert.pem على Linux، أو C:\php\extras\ssl\cacert.pem على Windows). اطلب من فريق الدعم إذا شككت في مصدر الملف.
    2. في ملف php.ini php.ini (أو عبر MultiPHP INI Editor) أضف أو عدّل : curl.cainfo = "/home/username/certs/cacert.pem" openssl.cafile = "/home/username/certs/cacert.pem"
      curl.cainfo = "/home/username/certs/cacert.pem"
      openssl.cafile = "/home/username/certs/cacert.pem"

      يجب أن يكون المسار مُطلقًا. على Windows، عدّل المسار (مثلاً C:\php\extras\ssl\cacert.pemC:\php\extras\ssl\cacert.pem).

    3. أعد تشغيل خدمة PHP (PHP-FPM/Apache) أو اطلب من مزوّد الاستضافة القيام بذلك، ثم أعد اختبار WordPress.
  3. إذا لم تكن لديك الصلاحيات لتعديل ملف php.ini، php.iniفاطلب تدخل فريق الدعم موضحًا المسار الذي تريد وضع cacert.pem فيه cacert.pem وإرفاق الملف إن لزم الأمر.

راجع تكوين PHP/cURL للخيار curl.cainfo : curl.cainfo : php.net — تكوين cURL (curl.cainfo).

4) حالات خاصة في WordPress

  • إذا ظهر الخطأ فقط عند العمليات الداخلية لـ WordPress (مثل التحديثات أو فحص الإضافات)، فابدأ بتحديث WordPress والإضافات — فقد تكون نسخة قديمة هي السبب.
  • بعض الإضافات تتجاوز التحقق من SSL عبر تعيين الخيار sslverify => false sslverify => false في استدعاءات HTTP الخاصة بها. لا تترك هذا الخيار في بيئة الإنتاج: فهو يلغي التحقق من سلسلة الشهادات ويعرّض الموقع لهجمات. الأفضل إصلاح سلسلة الشهادات على مستوى الخادم أو ضبط إعدادات PHP.
  • إذا كان أحد الإضافات أو القوالب يدير اتصالات HTTP خاصة به، فتحقّق من تكوينه (شهادة مخصّصة، خيار تجاهل التحقق من SSL…).

5) الفحوص النهائية والاختبارات

  1. أعد الاختبار من سطر الأوامر :
    curl -Iv https://example.com
    وتحقق من عدم ظهور الخطأ 60 ومن وجود السطر Verify return code: 0 (ok).
  2. في WordPress، أعد تشغيل العملية التي سبّبت الخطأ (تحديث، استيراد) وقم بتفعيل WP_DEBUG مؤقتًا WP_DEBUG لجمع السجلات إذا لزم الأمر.
  3. إذا استمرت المشكلة، اجمع: المخرجات الكاملة لأمر curl -Iv https://votredomaine curl -Iv أو openssl s_clientopenssl s_client -showcerts -connect votredomaine:443، لقطة شاشة لخطأ WordPress، وبيّن ما إذا كانت شهادتك AutoSSL (Let's Encrypt) أم مشتراة. ثم افتح تذكرة دعم مرفقًا بهذه العناصر.

استكشاف سريع — الأعراض الشائعة وطرق التصحيح

  • سلسلة الشهادات غير مكتملة (الشهادة الوسيطة مفقودة) — قم بتثبيت CABUNDLE في cPanel (انظر §2).
  • شهادة موقّعة ذاتيًا — استبدلها بشهادة صادرة عن سلطة تصديق (CA) معترف بها (Let’s Encrypt أو سلطة أخرى).
  • ملف cacert.pem مفقود أو قديم — حدّث حزمة شهادات CA على النظام أو اضبط curl.cainfo (انظر §3). cacert.pem مفقود أو غير مُحدَّث — قم بتحديث حزمة CA الخاصة بالنظام أو قم بتكوين curl.cainfo (انظر §3).
  • توقيت النظام غير صحيح — اضبط ساعة النظام (NTP)؛ على الاستضافة المشتركة، اتصل بالدعم.
  • مكوّن إضافي يعطل التحقق من SSL — أعد تفعيل التحقق وصحّح سلسلة الشهادات بدلاً من تعطيلها.

هل تحتاج إلى مساعدة؟

إذا لم تتمكن من تصحيح السلسلة بنفسك (استضافة مشتركة) أو إذا لم تكن لديك الصلاحيات لتعديل php.ini، افتح تذكرة مرفقًا:

  • لقطة شاشة لرسالة الخطأ في WordPress.
  • المخرجات النصية لـ curl -Iv https://votredomaine أو لـ openssl s_client -showcerts -connect votredomaine:443.
  • بيان ما إذا كنت تستخدم AutoSSL / Let’s Encrypt أو شهادة مُشتراة.

يمكن لفريقنا، وفقًا لصلاحيات وصولكم، إعادة تشغيل AutoSSL أو تثبيت السلسلة الكاملة أو تحديث حزمة CA الخاصة بالنظام. لفتح تذكرة، استخدم قسم الدعم في مساحة عميلك.

ملحق — أوامر مفيدة

# inspecter la connexion TLS
curl -Iv https://example.com

# afficher les certificats envoyés par le serveur
openssl s_client -showcerts -connect example.com:443

# vérifier la version de cURL utilisée par PHP
php -r "var_dump(curl_version());"

ملاحظة : بعض التصحيحات تتطلب صلاحيات المسؤول (تحديث حزمة CA الخاصة بالنظام، إعادة تشغيل PHP/FPM). إذا كنت على استضافة مشتركة، اطلب تدخل فريق الدعم.

روابط داخلية مفيدة : دليل SSL/TLS في cPanel — تثبيت Let's Encrypt عبر cPanel — تعديل إعدادات PHP (MultiPHP INI).

المراجع

وثائق مرجعية

  • PHP: curl_errno - الدليل
  • PHP: إعدادات وقت التشغيل — تكوين cURL (curl.cainfo)
  • وثائق cPanel & WHM — SSL/TLS

تم الاطلاع على الوثائق في 17 أكتوبر 2026. قد تختلف الأدوات حسب مزود الاستضافة.