آیا در بخش سلامت سایت وردپرس با خطای "cURL error 28: Connection timed out" مواجه شدهاید؟ این یکی از خطاهای رایج در وردپرس است که معمولاً به دلیل عدم پاسخ دهی به موقع یک درخواست خارجی یا داخلی رخ میدهد. در این مقاله تیم متخصص الماس هاست به صورت کامل و گام به گام به بررسی دلیل بروز خطا cURL error 28: Connection timed out و راه های رفع آن میپردازند.
cURL در وردپرس چیست؟
cURL یک ابزار نرم افزاری است که وردپرس و بسیاری از افزونه ها برای ارسال و دریافت داده از URL های دیگر از آن استفاده میکنند. کتابخانه cURL به عنوان یک افزونه PHP روی اکثر سرورها فعال است و نقش مهمی در عملکرد درخواست های API، به روزرسانی ها، بررسی لایسنس ها و… دارد.
علت بروز خطای cURL error 28
زمانی که cURL نتواند در بازهی زمانی مشخص پاسخی از سرور مقصد دریافت کند، خطای Connection timed out رخ میدهد. دلایل شایع این خطا عبارتاند از:
- محدودیت فایروال سرور یا افزونههای امنیتی
- پیکربندی نادرست SSL یا DNS
- مشکل در REST API وردپرس
- افزونههایی که درخواستهای طولانی یا زیادی ارسال میکنند
- قطع بودن موقت سرور مقصد یا آدرسهای API
پیام های خطا چگونه نمایش داده میشوند؟
در بخش سلامت سایت وردپرس (Site Health) معمولاً با یکی از پیامهای زیر روبرو خواهید شد:
یا:
یا:
راهنمای گام به گام رفع خطای cURL error 28 در وردپرس
فایروال یا افزونه های امنیتی را غیرفعال کنید
اولین گام، غیرفعال کردن موقت افزونه های امنیتی مانند Wordfence، iThemes Security یا All in One WP Security است. وارد پیشخوان وردپرس شوید. به مسیر افزونه ها > افزونه های نصب شده بروید. افزونه های امنیتی را غیرفعال کنید. سپس دوباره به بخش ابزارها > سلامت سایت بروید و بررسی کنید که آیا خطا برطرف شده یا نه. اگر خطا رفع شد، مشکل از تنظیمات فایروال بوده و باید بررسی شود کدام API ها یا آدرس ها توسط آن بلاک شدهاند.
غیرفعال کردن سایر افزونه ها برای عیب یابی
در برخی موارد، افزونه هایی مانند WooCommerce، Jetpack، Yoast یا افزونه های کش و بهینه سازی ممکن است باعث ایجاد درخواست های زمان بر شوند. تمام افزونهها را غیرفعال کنید. سپس یکبهیک آنها را فعال کنید تا مشخص شود کدام افزونه باعث بروز خطا شده است.
بررسی و رفع مشکلات SSL
اگر گواهی SSL سایت به درستی نصب نشده یا لینک ها هنوز با HTTP بارگذاری میشوند، ممکن است ارتباطات API به درستی برقرار نشوند. با پشتیبانی هاست تماس بگیرید و نصب مجدد SSL را بخواهید.
افزونه Really Simple SSL را نصب و فعال کنید تا لینک های سایت به صورت خودکار به HTTPS تغییر داده شوند.
بررسی اتصال DNS و دسترسی CURL از سرور
اگر هاست شما نتواند به URLهایی مانند api.wordpress.org متصل شود، ممکن است مشکل از DNS یا محدودیتهای شبکه باشد. اقدامات پیشنهادی:
- از پشتیبانی هاست بخواهید بررسی کند آیا اتصال CURL به آدرسهای خارجی مجاز است یا نه.
- درخواست کنید DNS سرور شما روی Google DNS (8.8.8.8) تنظیم شود.
- اگر امکان دارید، از طریق SSH تست اتصال را با دستور زیر انجام دهید:
افزایش مدت زمان پاسخگویی cURL
اگر مشکل شما مربوط به timeout است و سرور کند پاسخ میدهد، میتوانید تایماوت پیشفرض وردپرس را افزایش دهید. کد پیشنهادی:
add_filter( 'http_request_timeout', function( $timeout ) { return 30; // زمان به ثانیه });
این کد را در فایل functions.php قالب فعال خود قرار دهید.
بررسی فایل hosts در سرور
در صورتی که دسترسی به SSH دارید، بررسی فایل /etc/hosts میتواند نشان دهد که آیا آدرسهای خاصی مسدود یا ریدایرکت شدهاند.
تماس با پشتیبانی هاست
اگر با همه مراحل بالا مشکل رفع نشد، با پشتیبانی هاست خود تماس بگیرید و موارد زیر را مطرح کنید:
- آیا اتصال خروجی از سرور به URLهای خارجی فعال است؟
- آیا پورت 443 و 80 برای دسترسیهای CURL باز است؟
- آیا سرور فایروالی دارد که مانع ارتباطات داخلی وردپرس میشود؟
در نهایت
خطای cURL error 28: Connection timed out معمولاً نشانهی اختلال در ارتباطات وردپرس با سرویسهای خارجی یا داخلی است. خوشبختانه با بررسی مرحلهبهمرحلهی افزونهها، تنظیمات امنیتی و وضعیت هاست، میتوان به راحتی آن را برطرف کرد. اگر با انجام روشهای بالا موفق نشدید، پیشنهاد میشود با تیم فنی هاستینگ خود تماس بگیرید.