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

cURL Error 28 Connection Timed Out

اگر یک وردپرس کار هستید و روزانه زمان زیادی از وقت خود را در محیط وردپرس می گذرانید. ممکن است با خطای cURL Error 28: Connection Timed Out رو‌به‌رو شده باشید. این خطا یکی از مشکلات رایج وردپرس است. ممکن است باعث ایجاد اختلال و ایراد های پیش‌بینی نشده در سایت شما شود. ما در این مقاله به روشهای رفع این مشکل میپردازیم.

cURL چیست

cURL نرم‌افزاری است که در وردپرس و بسیاری از برنامه‌های وب دیگر مورد استفاده قرار می‌گیرد. این نرم‌افزار برای ارسال و دریافت درخواست داده‌ها از طریق URL کاربرد دارد. در واقع وردپرس برای پاسخگویی به درخواستهای API از این نرم‌افزار استفاده میکند.

این یک extention برای زبان برنامه‌نویسی PHP است و هاست مورد نظر شما وظیفه محافظت و پشتیبانی از آن را دارد. اگر شما پیکر بندی cURL را به درستی انجام ندهید، وب سایت وردپرسی شما با مشکل روبه‌رو می‌شود و ممکن است به درستی کار نکند.

خطای cURL Error 28: Connection Timed Out

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

اگر زمان پاسخگویی به این درخواستها تمام شود؛ شما در بخش سلامت سایت خود با عنوان REST API Encountered in Error رو‌به‌رو خواهید شد. زمانی که این خطا گسترش پیدا کند این پیام به شما نشان داده میشود:

Error: cURL error 28: Operation timed out after x milliseconds with x bytes received (http_request_failed)

در این شرایط شما ممکن است با یک خطای دیگر نیز رو‌به‌رو شوید که به شما میگوید: سایت شما به درخواست برگشت پاسخگو نیست یا قادر به تکمیل فرایند نیست. در چنین شرایطی احتمالا خطای مشابه به این خطا مشاهده خواهید کرد:

The loopback request to your site failed, this means features relying on them are not currently working as expected.

عوامل موثر

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

  • برخی افزونه های فایروال وردپرس ممکن است مانع انجام درخواست REST API شوند. دلیل این اتفاق این است که این نوع افزونه REST API را یک فعالیت مشکوک تلقی میکند. مثلاً گزارشها حاکی است که افزونهٔ WP Limit Login Attempts که برای محدود کردن ورود های ناموفق استفاده میگردد، میتواند دسترسی به API ها را ببندد. یا افزونه‌هایی که ReCAPTCHA را به سایت اضافه میکنند هم همینطورند.
  • مورد بعدی ممکن است بخاطر DNS سرور شما باشد. اگر DNS سرور شما به درستی کار نکند ممکن است باعث رخداد برخی موضوعات از جمله درخواستهای ناموفق HTTP و درنهایت خطای time out error در وردپرس میشود.
  • همچنین ممکن است محدودیتی از سمت میزبان سایت در wp-cron وجود داشته باشد یا اینکه loopback غیرفعال است.

رفع خطای cURL Error 28: Connection Timed Out

برای رفع این مشکل چند راه و روش برای شما وجود دارد که در صورت لزوم می‌توانید از آن‌ها استفاده کنید:

غیرفعال کردن فایروال

غیرفعال کردن فایروال
غیرفعال کردن فایروال

در مرحله اول اگر در وردپرس از یک firewall یا افزونه امنیتی استفاده میکنید، بهتر است برای مدتی آن را غیرفعال کنید و پس از آن به صفحه سلامت سایت خود بروید و بررسی کنید که مشکل حل شده است یا نه.

اگر مشکل حل شده است باید ورود های مربوط به firewall وردپرس خود را بررسی کنید و حساب مسدود شده را بیابید. شما با انجام این کار منبع مسئله و مشکل را پیدا کرده‌اید و با توجه به آن میتوانید تنظیمات firewall را انجام دهید تا از مسدود شدن API های قانونی جلوگیری شود.

غیرفعال کردن افزونه‌ها

غیرفعال کردن همه افزونه‌ها
غیرفعال کردن همه افزونه‌ها

دومین روش این است که هر افزونه ای که روی وردپرس فعال دارید را غیرفعال کنید. زیرا این افزونه ها نیز درخواستهای خود را ارسال میکنند و گاهی ممکن است به دلیل ارسال درخواستهای زیاد و پشت سر هم، شما خطای cURL مشاهده کنید.

ساده‌ترین راه برای پی بردن به این موضوع این است که به قسمت افزونه های نصب شده بروید و همه افزونه ها را انتخاب و غیر فعال کنید. حالا به قسمت سلامت سایت خود مراجعه کنید و اگر سایت را بدون هیچ مشکلی مشاهده کردید، متوجه خواهید شد که مشکل از افزونه ها بوده است.

یکی یکی آنها را فعال کنید تا مشکل دوباره ایجاد شود و افزونه ای که باعث بروز مشکل شده است را بیابید. سپس میتوانید درمورد افزونه ای که باعث ایجاد این مشکل شده است، تحقیق کنید و مشکل به وجود آمده را رفع کنید.

همچنین می توانید افزونه Query Monitor را نصب کرده و وضعیت تماس های HTTP API را در صفحه مدیریت که خطا نمایش داده می شود، بررسی کنید.

آپدیت بودن نسخه‌های PHP , cURL , OpenSSL

بررسی نسخه‌های PHP و cURL
بررسی نسخه‌های PHP و cURL

گام بعدی این است که مطمئن شوید سرور سایت شما از آخرین نسخه PHP و cURL و OpenSSL استفاده میکند. برای پی بردن به این موضوع از منوی وردپرس، از بخش ابزارها روی گزینه سلامت سایت کلیک کنید.

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

همینطور محدودیت Memory Limit یا حافظه RAM را کمی افزایش دهید. ممکن است برخی از کنترل پنل‌ها اجازه انجام این کار را به شما بدهند. باید با شرکت هاستینگ خود تماس بگیرید و از آنها بخواهید که این نسخه‌ها را برای شما افزایش دهند.

رفع مشکلات محتوای ناامن SSL

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

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

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

خطا حل نشد؟ با هاست خود تماس بگیرید.

اگر سایت شما پس از طی کردن مراحل بالا همچنان خطای cURL 28 را میدهد. به احتمال زیاد مشکل از سمت ارائه دهنده هاستینگ شما است. در واقع فاکتورهای بسیار زیاد و مهمی وجود دارد که فقط در اختیار میزبان وب (شرکتی که از آن هاست تهیه کرده‌اید) قرار دارد و شما نمیتوانید آنها را کنترل و رفع کنید.

برای مثال اگر سرورهای سایت شما نتواند درخواستهای ارسال شده را حل کند سایت با این خطا روبرو میشود.

امیدواریم در این مقاله به شما نحوه برطرف کردن خطای cURL 28 کمک کرده باشیم.