عندما يحاول 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و opensslopensslلأغراض التشخيص (اختياري لكنه موصى به). - نسخة احتياطية حديثة (الملفات + قاعدة البيانات) قبل أي تعديل على الشهادة أو على تكوين PHP.
1) تشخيص سريع (ما الذي يجب التحقق منه أولاً)
- أعد إنتاج الخطأ داخل WordPress (مثلاً: تحديث أو استيراد) وسجل الرسالة الكاملة والوقت.
- اختبر من الطرفية (استبدل example.com
example.comباسم نطاقك) :curl -Iv https://example.com
ابحث خصوصًا عن السطور «Server certificate» و «Verify return code». إذا أعاد cURL «SSL certificate problem» أو «unable to get local issuer certificate»، فقد فشلت عملية التحقق من السلسلة. - فحص أكثر تفصيلاً للسلسلة المرسلة من الخادم :
openssl s_client -showcerts -connect example.com:443
يعرض الإخراج الشهادة (أو الشهادات) المرسلة من الخادم. إذا كانت الشهادة الوسيطة مفقودة، فالسلسلة غير مكتملة. - تحقق من توقيت الخادم: ساعة نظامية غير مضبوطة تمنع التحقق من TLS. (على استضافة مشتركة، يجب طلب ذلك من الدعم.)
إذا أظهر الفحص سلسلة غير مكتملة (أو شهادة موقعة ذاتيًا)، انتقل إلى القسم التالي لتصحيح التثبيت على مستوى الخادم/cPanel.
2) تثبيت/تصحيح سلسلة الشهادات في cPanel (تثبيت كامل)
إذا لم يرسل الخادم السلسلة الكاملة (غياب الشهادة الوسيطة)، فسيَرفض العديد من العملاء — بما في ذلك PHP/cURL — الاتصال. يوفر cPanel أداة لتثبيت CRT والمفتاح الخاص وCABUNDLE.
- في cPanel : Security → SSL/TLS → Manage SSL Hosts (أو Install an SSL Website حسب الإصدار).
- اختر النطاق. استخدم «Autofill by Domain» إذا كانت شهادتك موجودة بالفعل، أو ألصقها يدويًا :
Certificate (CRT)— شهادة النطاق.Private Key (KEY)— المفتاح الخاص المرتبط.Certificate Authority Bundle (CABUNDLE)— الجهة أو الجهات الوسيطة المقدَّمة من مرجع الشهادات (CA) (السلسلة الكاملة).- أكد التثبيت. بعد التثبيت، تحقق من حالة الشهادة وأعد اختبار اتصال TLS (الأمر
curl -Iv).
إذا كنت تستخدم 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 :
curl.cainfo.- على VPS/خادم بصلاحيات root: حدّث مستودع شهادات النظام (الحزمة
ca-certificatesعلى Debian/Ubuntu/CentOS). سيؤدي ذلك إلى تحديث ملف CA العام الذي يستخدمه OpenSSL/cURL. - إذا اضطررت للتدخل بنفسك (في استضافة تتيح لك تعديل
php.ini) : - حمّل ملفًا محدثًا
cacert.pemفي دليلٍ آمنٍ (مثلاً/home/username/certs/cacert.pemعلى Linux، أوC:\php\extras\ssl\cacert.pemعلى Windows). اطلب من فريق الدعم إذا شككت في مصدر الملف. - في ملف 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). - أعد تشغيل خدمة PHP (PHP-FPM/Apache) أو اطلب من مزوّد الاستضافة القيام بذلك، ثم أعد اختبار WordPress.
- إذا لم تكن لديك الصلاحيات لتعديل ملف 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) الفحوص النهائية والاختبارات
- أعد الاختبار من سطر الأوامر :
curl -Iv https://example.com
وتحقق من عدم ظهور الخطأ 60 ومن وجود السطر Verify return code: 0 (ok). - في WordPress، أعد تشغيل العملية التي سبّبت الخطأ (تحديث، استيراد) وقم بتفعيل WP_DEBUG مؤقتًا
WP_DEBUGلجمع السجلات إذا لزم الأمر. - إذا استمرت المشكلة، اجمع: المخرجات الكاملة لأمر 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: SSL/TLS (الوثائق)
وثائق مرجعية
- PHP: curl_errno - الدليل
- PHP: إعدادات وقت التشغيل — تكوين cURL (curl.cainfo)
- وثائق cPanel & WHM — SSL/TLS
تم الاطلاع على الوثائق في 17 أكتوبر 2026. قد تختلف الأدوات حسب مزود الاستضافة.