آموزش رفع خطای cURL Error 28 در وردپرس

آخرین بروزرسانی : 22 تیر 1405
افزونه المنتور پرو

کاملاً اورجینال با قابلیت آپدیت خودکار در پنل پیشخوان وردپرس

در این نوشته شما می خوانید

خطای cURL Error 28 زمانی رخ می‌دهد که وردپرس در مدت زمان مشخص پاسخی از سرور یا  API  دریافت نکند. معمولا دلایلی مثل مشکلات DNS ، SSL ، فایروال ، افزونه‌های امنیتی و تنظیمات سرور باعث بروز این خطا می شود. روی سایت های ایرانی هم به دلیل مشکلات اینترنت و عدم امکان دسترسی به مخزن وردپرس این خطا در زمان نت ملی، هنگام بروزرسانی افزونه ها مشاهده می شود.

به طور کلی، خطای Curl error 28 connection timed out از جمله خطاهایی است که کاربران وردپرسی در بخش سلامت سایت یا Site health یا هنگام کلیک روی نوتیفیکیشن بروزرسانی افزونه ها با آن مواجه می شوند. در این آموزش در مورد مفهوم خود cURL در وردپرس و همچنین نحوه رفع خطای cURL Error 28 آشنا خواهیم شد.

خطای cURL Error 28

cURL در وردپرس چیست؟

cURL  نام کتابخانه ای برای ارسال و دریافت درخواست‌های HTTP و HTTPS است . و در سیستم  وردپرس از آن برای ارتباط با APIها، بررسی به‌ روزرسانی ‌ها و اجرای برخی قابلیت‌ های داخلی استفاده می شود.

درواقع باید بگوییم که cURL سیستم یا نرم افزاری است که برای انتقال و دریافت اطلاعات از طریق URL مورد استفاده قرار می گیرد. نرم افزار cURL در وردپرس و دیگر برنامه های وب برای ارسال و دریافت داده ها کاربرد دارد؛ آموزش وردپرس به شما کمک میکند که این مفهوم را بهتر درک کنید.

ماژول curl به عنوان یک extension یا افزودنی در تنظیمات PHP هاست وجود دارد و در وردپرس به درخواست های api رسیدگی می کند. مدت زمان مشخصی برای انتقال اطلاعات به این وسیله وجود دارد و در شرایطی که مدت زمان پردازش و پاسخ به درخواست بیش از این تایم مشخص طول بکشد؛ ارور cURL 28: Connection Timed Out نمایش داده می شود. که یعنی مدت زمان اتصال جهت دریافت پاسخ درخواست به پایان رسیده.

چرا ارور cURL Error 28: Connection Timed Out ایجاد می شود؟

روش برنامه نویسی که وردپرس برای ارسال و دریافت درخواست ها استفاده می کند WordPress REST API نام دارد. و cURL Error 28: Connection Timed Out  در زمان اتمام مدت پاسخگویی به این درخواست ها ایجاد می شود.

در این مواقع در بخش سلامت سایت (پیشخوان> ابزارها> سلامت سایت) با خطای REST API Encountered in Error یا “سایت شما نمی تواند یک درخواست loop back را کامل کند- Your site could not complete a loopback request” مواجه می شوید که با گسترش خطا در توضیحات کامل ارور با پیام :

Error: cURL error 28: Operation timed out after x milliseconds with x bytes received (http_request_failed) رو به رو خواهید شد.

ارور cURL Error 28: Connection Timed Out

دلایل بروز cURL Error 28 که یکی از خطاهای رایج وردپرس می باشد ؛ موارد زیر هستند:

  • مشکوک تشخیص دادن و مسدودسازی درخواست های api توسط فایروال یا افزونه های امنیتی
  • اشکال در پیکربندی سرور و عدم اجرا و توقف درخواست ها
  • عدم ارسال صحیح درخواست های HTTP در اثر عملکرد نادرست DNS سرور
  • وجود کدها و اسکریپت های مخرب در افزونه های وردپرسی که باعث اختلال درcURL می شود.

چگونه تشخیص دهیم مشکل دقیقاً از کجاست؟

قبل از اعمال راهکارهای رفع خطا، باید  ابتدا منبع اصلی مشکل را شناسایی کنید. موارد زیر به شما کمک می کنند که دلیل خطا را پیدا کنید:

  • پیام کامل خطا را در بخش سلامت سایت (Site Health) : اگر در جزئیات خطا عباراتی مانند REST API، Loopback Request  یا http_request_failed  وجود دارد، یک سرنخ خوب است. و احتمالاً مشکل به ارتباط وردپرس با سرور مربوط است و باید تنظیمات افزونه‌ها، فایروال، DNS، SSL و پیکربندی هاست را بررسی شوند.
  • غیرفعالسازی افزونه ها. اگر پس از غیرفعال‌ شدن افزونه ها خطا برطرف شد، احتمالاً یکی از افزونه‌ها باعث ارسال درخواست‌های ناموفق یا بیش از حد شده است.
  • نسخه PHP، cURL  و OpenSSL را بررسی کنید. قدیمی بودن هر یک از این پارامترها می‌تواند باعث بروز خطای Timeout شود.
  • فعال بودن گواهینامه SSL و صحت تنظیمات DNS را بررسی کنید. هرگونه اختلال در این بخش‌ها ممکن است مانع برقراری ارتباط صحیح با سرور و خطا شود.
  • لاگ‌های هاست یا وردپرس را بررسی کنید.  اگر هیچ یک از تست های قبلی کمک کننده نبود؛ وارد کنترل پنل هاست خود شده و لاگ های هاست را بررسی کنید. اگر خطا به تنظیمات سرور، محدودیت منابع یا مشکلات شبکه مربوط باشد، معمولاً در فایل‌های لاگ مشخص می شود.
  • نت ملی در ایران: برای سایت های ایرانی در زمان نت ملی این خطا در هنگام آپدیت افزونه های رایگان رخ می دهد . و علت عدم امکان دسترسی به سایت وردپرس می باشد.

در جدول زیر علت خطای cURL در وردپرس به همراه میزان احتمال را مشاهده می کنید:

احتمالعلت
زیادافزونه امنیتی
متوسطDNS
زیادSSL
متوسطPHP
زیادهاست

نحوه رفع خطای cURL Error 28: Connection Timed Out در وردپرس

مرحله اول : غیرفعالسازی موقت افزونه امنیتی و فایروال وردپرس

در بخش افزونه های نصب شده وردپرس، اگر افزونه امنیتی مثل wordfence، Sucuri security و… نصب دارید موقتا غیرفعال کنید. بعد وارد بخش سلامت سایت شوید اگر خطای cURL برطرف شده تنظیمات افزونه امنیتی را به نحوی تغییر دهید که درخواست های API صحیح را بلاک نکند.

مرحله دوم : اطمینان از بروز بودن نسخه cURL و PHP

قدیمی بودن ورژن cURL، PHP و Open SSL ممکن است باعث این خطا باشد. بنابراین از بخش سلامت سایت، تب اطلاعات و قسمت سرور، مشابه تصویر زیر نگارش یا ورژن موارد گفته شده را چک کنید و در صورت بروز نبودن از پشتیبانی هاست بخواهید که ارتقا به جدیدترین نسخه انجام شود.

نسخه cURL و PHP

مرحله سوم : بررسی صحت گواهینامه SSL سایت

در صورت عدم فعالسازی گواهینامه SSL روی سایت و ارسال درخواست ها بوسیله HTTPs و یا فعالسازی SSL اما عدم انجام پیکربندی مناسب سرور با خطای cURL پاسخ خواهد داد.

درواقع اگر SSL سایت فعال نباشد و درخواست های API با https  ارسال شود؛ به جای پردازش و پاسخ به درخواست سرور با خطای زیر پاسخ می دهد:

‘Error: cURL error 7: Failed to connect to localhost port 443: Connection refused (http_request_failed)

در صورتی که تشخیص دادید علت خطای cURL درسایت شما ایرادات مربوط به گواهینامه SSL است؛ از طریق تنظیمات هاست تنظیمات SSL را بررسی کنید.

مرحله چهارم : غیرفعالسازی موقت همه افزونه ها

تمامی افزونه هایی که در سایت های وردپرسی نصب می شوند، برای انتقال اطلاعات درخواست های API ارسال می کنند. اگر درخواست های API زیاد و با فاصله خیلی کم ارسال شوند؛ خطای cURL ایجاد می شود. برای تشخیص اینکه افزونه ها در بروز این خطا در سایت شما تاثیر دارند یا خیر باید به بخش افزونه های نصب شده در پیشخوان سایت خود مراجعه کنید و یکباره همه افزونه را موقتا غیرفعال نمایید. سپس به بخش سلامت سایت بروید و وضعیت خطای Curl 28 را چک کنید.

اگر خطا رفع شده باشد؛ مطمئنا یکی از افزونه های شما درخواست های API متعدد و پشت سرهم ارسال می کند. برای شناسایی این افزونه یکی یکی پلاگین ها را مجدد فعال کنید و همزمان بخش سلامت سایت را هم زیر نظر داشته باشید. چون احتمالا به محض فعالسازی مجدد یکی از افزونه ها مجدد خطا ظاهر می شود. و به این روش می توانید افزونه مشکل ساز را شناسایی کنید.

مرحله آخر : تماس با پشتیبانی هاستینگ

اگر با هیچ یک از راه حل های گفته شده موفق به رفع خطای 28 cURL نشدید؛ باید از پشتیبانی هاست درخواست کنید که در خصوص تنظیمات DNS یا ایرادات احتمالی دیگر که باعث بروز خطا شده اقدامات لازم را انجام دهد.

چه زمانی مشکل از هاست است؟

اگر پس همه مراحلی که توضیح داده شده  (مثل بررسی تنظیمات وردپرس و غیرفعال کردن افزونه‌ ها) همچنان خطای cURL Error 28  برطرف نشد ، احتمال زیاد مشکل از هاست یا پیکربندی سرور باشد. معمولاً در شرایط زیر باید موضوع را با پشتیبانی هاست مطرح کنید:

  • با غیرفعال کردن تمام افزونه‌ها و فعالسازی از پوسته پیش‌ فرض، خطا همچنان وجود دارد.
  • نسخه‌های PHP، cURL  و  OpenSSL آپدیت هستند.
  • در بخش سلامت سایت (Site Health) همچنان خطاهای REST API   یا Loopback Request دیده می شود.
  • چند سایت دیگر هم روی همان هاست همین خطا را دارند.
  • در لاگ‌های هاست، خطاهای مربوط به Timeout، DNS  یا اتصال به سرور ثبت شده است.

در این شرایط، باید از پشتیبانی هاست بخواهید تنظیمات DNS، فایروال، محدودیت‌های سرور، منابع هاست و پیکربندی PHP/cURL را بررسی کنند. به این دلیل که موارد مذکور خارج از دسترسی مدیر سایت می باشد.

سوالات متداول

آیا این خطا باعث از کار افتادن سایت می‌شود؟

در بیشتر موارد این خطا فقط به‌روزرسانی افزونه‌ها و قالب‌ها، ارتباط با REST API، ارسال درخواست به سرویس‌های خارجی یا برخی امکانات افزونه‌ها را با مشکل مواجه می کند. اما اگر به خاطر اختلالات جدی در سرور باشد ممکن است عملکرد بخشی از سایت دچار مشکل شود.

آیا هاست باعث Curl Error 28 می‌شود؟

بله، هاست یکی از رایج ‌ترین عوامل بروز خطای cURL Error 28 در وردپرس است. اما تنها دلیل نیست. و باید ابتدا سایر دلایل بروز خطا بررسی شوند.

آیا افزونه‌ها می ‌توانند علت باشند؟

بله افزونه های وردپرسی ممکن است با ارسال درخواست های ناموفق زیاد باعث بروز این خطا در سایت شوند.

جمع بندی

خواندید که علت بروز خطای Curl error 28 connection timed out اتمام مدت زمان مجاز برای پاسخ به درخواست های وردپرس می باشد. در این آموزش با علت های بروز این ارور و همچنین موثرترین روش های از بین بردن این ارور شایع در بخش سلامت سایت آشنا شدید. در صورتی که هیچ یک از موارد گفته شده جهت شناسایی و رفع خطای cURL موثر نبود؛ قطعا کمک گرفتن از هاست جهت انجام تنظیمات در پیکربندی سرور کارساز خواهد بود.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *