SHET23
English

رفع خطای cURL Error 28 در وردپرس؛ آموزش قدم‌به‌قدم

رفع خطای cURL Error 28 در وردپرس؛ آموزش قدم‌به‌قدم

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

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

خطای cURL Error 28 یعنی چی؟

cURL ابزاریه که داده‌ها رو بین سرورها جابه‌جا می‌کنه. نام اون از مفهوم «Client for URLs» میاد و نباید اون رو مخفف رسمی Client URL Library بدونیم. وردپرس برای ارتباط با سرویس‌های اینترنتی از API درخواست‌های HTTP خودش کمک می‌گیره. بسته به تنظیمات سرور، cURL هم می‌تونه یکی از روش‌های انجام این ارتباط باشه.

کد ۲۸ در cURL می‌گه زمان تعیین‌شده برای عملیات تموم شده. این زمان همیشه ۳۰، ۶۰ یا ۱۲۰ ثانیه نیست. وردپرس، افزونه یا کدی که درخواست رو می‌فرسته می‌تونه زمان متفاوتی تعیین کنه. به همین دلیل باید متن کامل خطا، مدت ثبت‌شده و نشانی مقصد رو با هم بررسی کنید.

این خطا ممکنه بررسی به‌روزرسانی‌ها، ارتباط با REST API، اجرای بعضی کارهای زمان‌بندی‌شده یا اتصال افزونه‌ها به سرویس‌های خارجی رو مختل کنه. بااین‌حال، cURL مستقیماً مسئول همه ایمیل‌های SMTP نیست. ارسال SMTP معمولاً به افزونه ایمیل و کتابخانه‌ای مربوطه که ایمیل رو ارسال می‌کنه.

قبل از شروع، متن کامل خطا رو بررسی کنید

فقط عبارت «cURL error 28» رو یادداشت نکنید. کل پیام خطا رو بردارید و ببینید درخواست به کدوم دامنه فرستاده شده. ممکنه متنی شبیه نمونه زیر ببینید:

Error: cURL error 28: Operation timed out after X milliseconds (http_request_failed)

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

روش اول: سلامت سایت و نشانی مقصد رو بررسی کنید

در پیشخوان وردپرس به ابزارها ← سلامت سایت برید. در بخش «وضعیت» می‌تونید مشکلات REST API، درخواست‌های لوپ‌بک و ارتباط HTTPS رو ببینید. توضیحات هر خطا رو باز کنید و متن کاملش رو نگه دارید. اگه داخل پیام نام یک افزونه یا دامنه خارجی رو می‌بینید، بهتره بررسی رو از همون سرنخ شروع کنید.

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

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

روش دوم: تداخل افزونه‌ها رو بدون آسیب به سایت پیدا کنید

افزونه‌های امنیتی، کش، پشتیبان‌گیری و اتصال به سرویس‌های خارجی ممکنه روی درخواست‌های HTTP اثر بذارن. Wordfence و Sucuri هنوز فعال هستن، ولی افزونه‌ای که قبلاً با نام iThemes Security شناخته می‌شد، حالا Kadence Security نام داره. نام و محل تنظیمات فایروال در این افزونه‌ها با هم فرق می‌کنه؛ پس دنبال یک گزینه ثابت و عمومی مثل Allow Loopback Requests نگردید.

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

در محیط آزمایشی به افزونه‌ها ← افزونه‌های نصب‌شده برید. اول افزونه‌ای رو غیرفعال کنید که نامش در پیام خطا دیده می‌شه یا درست پیش از شروع مشکل نصب یا به‌روز شده. بعد دوباره سلامت سایت یا همون کاری رو آزمایش کنید که قبلاً خطا می‌داد.

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

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

روش سوم: نسخه PHP، cURL و OpenSSL رو بررسی کنید

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

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

طبق نیازمندی‌های رسمی وردپرس، بهتره سرور از PHP 8.3 یا یک نسخه بالاترِ پشتیبانی‌شده استفاده کنه. قبل از تغییر نسخه PHP، حتماً سازگاری قالب و افزونه‌ها رو در محیط آزمایشی بسنجید. ارتقای PHP به‌تنهایی رفع خطای cURL Error 28 رو تضمین نمی‌کنه، ولی استفاده از نسخه پشتیبانی‌شده برای امنیت و سازگاری سایت مهمه.

برای cURL و OpenSSL نمی‌شه یک شماره نسخه ثابت رو به‌عنوان حداقل مناسب همه سرورها معرفی کرد. بهتره نسخه‌ای روی سرور نصب باشه که سازنده سیستم‌عامل یا شرکت هاست هنوز براش اصلاح امنیتی منتشر می‌کنه. OpenSSL 1.1.1 به پایان پشتیبانی عمومی خودش رسیده؛ پس از پشتیبانی هاست بخواید نسخه نصب‌شده و اصلاحات امنیتی سیستم‌عامل رو بررسی کنه.

روش چهارم: DNS، فایروال، CDN و SSL رو بررسی کنید

DNS نام دامنه رو به نشانی IP تبدیل می‌کنه. اگه DNS سرور نتونه دامنه مقصد رو پیدا کنه یا پاسخ خیلی دیر برسه، درخواست ممکنه با خطای ۲۸ تموم بشه. پشتیبانی هاست می‌تونه پیدا‌شدن دامنه مقصد رو از داخل همون سروری بررسی کنه که سایتتون روی اون میزبانی می‌شه.

فایروال سرور، افزونه امنیتی یا سرویس CDN هم ممکنه درخواست خروجی یا درخواست برگشتی به سایت رو مسدود کنه. اگه از CDN استفاده می‌کنید، زمان خطا و IP سرور رو برای پشتیبانی همون سرویس بفرستید. برای آشنایی بیشتر با این سرویس‌ها می‌تونید راهنمای انتخاب CDN ایرانی یا خارجی رو هم بخونید.

برای بررسی SSL، فقط دیدن قفل کنار نشانی سایت کافی نیست. زنجیره گواهی، تاریخ اعتبار، نام دامنه و دسترسی HTTPS هم باید درست باشن. افزونه‌ای که قبلاً Really Simple SSL نام داشت، حالا با نام Really Simple Security منتشر می‌شه. این افزونه برای مدیریت بعضی تنظیمات SSL مفیده، ولی همیشه نمی‌تونه خطای گواهی یا پیکربندی سرور رو به‌تنهایی برطرف کنه.

افزونه Really Simple Security
افزونه Really Simple Security

اگه از دایرکت‌ادمین استفاده می‌کنید، آموزش نصب SSL رایگان در DirectAdmin مراحل نصب و بررسی خطاهای رایج رو نشون می‌ده. یادتون نره cURL error 7 با خطای ۲۸ فرق داره. خطای ۷ معمولاً یعنی اتصال به میزبان یا پورت برقرار نشده، ولی خطای ۲۸ می‌گه زمان تعیین‌شده برای عملیات تموم شده.

روش پنجم: اطلاعات لازم رو برای پشتیبانی هاست بفرستید

اگه بعد از بررسی افزونه‌ها، مقصد درخواست، نسخه‌های سرور و SSL هنوز علت مشکل رو پیدا نکردید، پشتیبانی هاست باید درخواست رو از داخل سرور آزمایش کنه. به‌جای اینکه فقط بنویسید «cURL کار نمی‌کنه»، این اطلاعات رو براشون بفرستید:

  • متن کامل خطا و زمان دقیق رخ‌دادن اون
  • دامنه یا URL مقصد، بدون اطلاعات محرمانه و کلیدهای API
  • نام افزونه یا کاری که موقع دیدن خطا انجام می‌دادید
  • نتیجه آزمایش با افزونه‌های غیرفعال در محیط آزمایشی
  • نسخه PHP، cURL و OpenSSL نمایش‌داده‌شده در سلامت سایت

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

جمع‌بندی

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

خطای cURL Error 28 دقیقاً یعنی چی؟

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

آیا افزایش timeout خطای ۲۸ رو حل می‌کنه؟

همیشه نه. اگه درخواست فقط کمی زمان بیشتری لازم داشته باشه، افزایش منطقی timeout ممکنه کمک کنه؛ ولی وقتی مشکل از DNS، فایروال، SSL یا در دسترس نبودن مقصد باشه، این کار فقط خطا رو دیرتر نشون می‌ده.

آیا خطای cURL Error 28 حتماً از هاست هست؟

نه. افزونه‌ها، فایروال، DNS، SSL، سرویس مقصد و تنظیمات سرور هم می‌تونن این خطا رو ایجاد کنن. بعد از آزمایش‌های وردپرس، پشتیبانی هاست باید گزارش‌ها و اتصال خروجی سرور رو بررسی کنه.

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

بهتره اول افزونه مرتبط با خطا یا افزونه‌ای رو بررسی کنید که به‌تازگی نصب یا به‌روز شده. اگه نتیجه نگرفتید، آزمایش همه افزونه‌ها رو در محیط آزمایشی انجام بدید تا سایت اصلی، فروشگاه یا امنیت سایتتون مختل نشه.

نظر شما در این مورد چیه؟

  1. U11606۱۴ تیر ۱۴۰۵

    من این خطا رو روی افزونه fast-indexing-api داشتم. درخواست های ارسالی به گوگل بلاک میشد و تغییرات صفحه رو نمیشد ذخیره کرد. با غیرفعال کردنش درست شد.

  2. U407604۲۳ بهمن ۱۴۰۴

    درود جناب راد من چندروزیه سایتم این خطارو میده
    REST API: (http_request_failed) cURL error 28: Operation timed out after 10000 milliseconds with 0 bytes received

    هاستم ایرانه و هرکاری کردم درست نشد ایا چیز مهمیه ؟؟ روی سئوی سایت تاثیرذ داره ؟ و اگر مهم نیست بهم بگید لطفا خودمو خسته نکنم

    • رضا راد۲۵ بهمن ۱۴۰۴

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

  3. U387541۱۲ مرداد ۱۴۰۴

    سلام وقت بخیر
    من چند وقتیه بر روی سایت وردپرسی افزونه ی به پرداخت بانک ملت رو نصب کردم تا چند وقت پیش کار می کرد ولی الان ارور ارور HTTP Error: cURL ERROR: 28: Failed to connect to bpm.shaparak.ir port 443: Connection timed out میدهد. سایت رو بررسی کردم .افزونه ها را غیرفعال کرم . ورژن php رو تغییر دادم و وردپرس رو بروزرسانی کردم ولی حل نشد درگاه پرداخت می گوید مشکل از سایت می باشد میشه لطفا راهنمایی نمایید

    • رضا راد۱۲ مرداد ۱۴۰۴

      سلام اگر هاستتون خارج از ایرانه میتونه بخاطر اون باشه

  4. U375393۴ فروردین ۱۴۰۴

    سلام دوستانی ک افزونه نمیتونن نصب کنن با vpn امتحان کنن بره من درست شد

  5. U337378۷ بهمن ۱۴۰۲

    سلام خسته نباشید من همش این خطا رو میگیرم وقتی میخوام با المنتور برگمو ادیت کنم cURL error 28: Failed to connect to my.elementor.com port 443 after 10002 ms: Timeout was reached

    • رضا راد۸ بهمن ۱۴۰۲

      سلام از هاست بخواید ارتباط با سایت المنتور رو بررسی کنن

  6. U317973۲۳ مهر ۱۴۰۱

    سلام
    وقت بخیر
    ممنون از توضیحات خوب شما
    من با نگاه کردن به آموزش های شما وردپرس رو در لوکال هاست روی برنامه زمپ نصب کردم
    ولی هیچ کاری نمیتونم بکنم
    این ارور رو میده
    cURL error 28
    نه میشه افزونه نسب کرد
    نه پوسته
    هیچ کاری نمیشه کرد
    لطفا راهنمایی بفرمایید

    • تیم پشتیبانیتیم پشتیبانی۲۴ مهر ۱۴۰۱

      درود
      روش حل این ارور رو در همین مقاله توضیح داده ایم.

      • U317973۲۴ مهر ۱۴۰۱

        ممنون از جوابتون
        من همه افزونه ها رو پاک کردم
        هیچ افزونه ای ندارم
        فقط یه مسئله
        من هنوز دامنه و هاست خریداری نکردم
        اول میخام در زمپ سایت مورد نظرم را طراحی کنم بعد دامنه و هاست خرید کنم و انتقال بدم
        این ارور میتونه به خاطر همین باشه؟؟

        • رضا راد۲۶ مهر ۱۴۰۱

          سپاس. بله میتونه بخاطر مشکلات اینترنت باشه

          • U318052۲۷ مهر ۱۴۰۱

            سلام
            به هیچ عنوان با vpn نیز حل نمیشه بنده چک می کنم عرض می کنم

            • رضا راد۱ آبان ۱۴۰۱

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

  7. U317785۱۴ مهر ۱۴۰۱

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

    • رضا راد۱۸ مهر ۱۴۰۱

      سلام بخاطر مشکلات اینترنت هست.

      • U317909۲۰ مهر ۱۴۰۱

        یعنی نمیشه هیچ افزونه ای نصب کرد؟ با اتصال به وی پی ان حل میشه؟

        • رضا راد۲۶ مهر ۱۴۰۱

          با وی پی ان میتونید حل کنید مشکل رو به احتمال خیلی زیاد

  8. U317785۱۴ مهر ۱۴۰۱

    من چه زمپ نسخه 7 یا 8 رو نصب منیکنم و چه wampوزمانیکه میخوام یه افرونه نصب کنم این ارور رو میده

    • تیم پشتیبانیتیم پشتیبانی۱۶ مهر ۱۴۰۱

      درود
      از روش هایی که در همین پست برای حل این ارور معرفی کردیم برای حل مشکل استفاده کنید

  9. U38071۲۳ تیر ۱۴۰۰

    سلام
    من روی لوکال هاست(ومپ و زمپ) تم education را نصب کردم. وقتی برای نصب روی Thim core instalation کلیک میکنم، در قسمت Remote GET ارور زی را دریافت میکنم:
    wp_remote_get() failed. Please contact your hosting provider. cURL error 52: Empty reply from server
    راه حل چیست؟

  10. U34090۶ اسفند ۱۳۹۹

    با سلام عرض ادب لطفا بفرمایید اصلا این خطا خطای مهمیه؟؟
    cURL error 28: Operation timed out after 5000 milliseconds with 0 bytes received (http_request_failed)
    ارزش داره ما این همه راه بریم؟ اخه خودم فکر میکنم چیز مهمی نیست
    میشه بفرمایید دقیقا این خطا باعث چی میشه؟ حتما ما باید رفع کنیم اینو؟
    تشکر

    • رضا راد۹ اسفند ۱۳۹۹

      درود بر شما خیر اصلا مهم نیست. صرفا سایت شما احتمالا به دلیل تحریم‌ها نتونسته به یک سرویس متصل بشه

پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرس
پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرسآنلاین و پاسخگوی شما هستیم.آنلاین

در حال بارگذاری...

هر سوالی دارید بپرسید.پاسخگوی شما هستیم.