رفع خطای WP Rocket در وردپرس 7.1 و Cloudflare.php

آموزش رفع خطای افزونه راکت در وردپرس ۷.۱ (مشکل Cloudflare.php)
فهرست این مقاله

رفع خطای WP Rocket در وردپرس 7.1 و Cloudflare.php

اگر بعد از بروزرسانی وردپرس به نسخه ۷.۱ با خطای Critical Error یا Fatal Error مربوط به WP Rocket و فایل Cloudflare.php مواجه شده‌اید، قبل از هر تغییر دستی در فایل‌های افزونه یک نکته مهم را بدانید: این مشکل توسط تیم WP Rocket برطرف شده است و در بیشتر سایت‌ها کافی است افزونه WP Rocket را به نسخه 3.23.2.2 یا بالاتر بروزرسانی کنید.

این خطا می‌تواند باعث شود هم بخش عمومی سایت و هم پیشخوان وردپرس از دسترس خارج شوند. در ادامه ابتدا علت خطا را بررسی می‌کنیم و سپس روش رفع آن را در دو حالت «دسترسی داشتن به پیشخوان» و «از دسترس خارج شدن پیشخوان» توضیح می‌دهیم.

خطای WP Rocket در وردپرس ۷.۱ چیست؟

پس از انتشار وردپرس ۷.۱، در برخی سایت‌هایی که از WP Rocket استفاده می‌کردند یک خطای مهلک در فایل Cloudflare.php گزارش شد. این خطا معمولاً در مسیر زیر دیده می‌شود:

wp-content/plugins/wp-rocket/inc/ThirdParty/Plugins/CDN/Cloudflare.php

اگر لاگ خطاهای هاست یا حالت Debug وردپرس را بررسی کنید، ممکن است پیامی مشابه مورد زیر مشاهده کنید:

Fatal error: Uncaught TypeError: substr(): Argument #1 ($string) must be of type string, int given in .../wp-rocket/inc/ThirdParty/Plugins/CDN/Cloudflare.php on line 562

این خطا ممکن است باعث نمایش پیام «یک خطای مهم در این وب‌سایت رخ داده است»، صفحه سفید یا از دسترس خارج شدن پیشخوان وردپرس شود.

علت خطای Cloudflare.php در WP Rocket چیست؟

مشکل از بخشی از کد WP Rocket ایجاد می‌شد که یکی از کلیدهای ثبت‌شده در Hookهای وردپرس را به تابع substr() ارسال می‌کرد. در بعضی شرایط این مقدار به‌جای String به‌صورت Integer در اختیار تابع قرار می‌گرفت و PHP آن را معتبر نمی‌دانست.

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

در نتیجه، غیرفعال‌کردن Cloudflare را نباید به‌عنوان اولین راه‌حل این خطا در نظر گرفت.

راه‌حل اصلی: WP Rocket را بروزرسانی کنید

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

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

حالت اول: به پیشخوان وردپرس دسترسی دارید

اگر سایت هنوز بالا می‌آید و می‌توانید وارد مدیریت وردپرس شوید، مراحل زیر را انجام دهید:

  1. در صورت فعال بودن WP Rocket، آن را موقتاً غیرفعال کنید.
  2. به بخش افزونه‌های وردپرس بروید.
  3. نسخه WP Rocket را بررسی کنید.
  4. افزونه را به نسخه 3.23.2.2 یا نسخه جدیدتر بروزرسانی کنید.
  5. پس از اتمام بروزرسانی، WP Rocket را مجدداً فعال کنید.
  6. کش WP Rocket و در صورت استفاده، کش CDN یا Cloudflare را پاک کنید.
  7. صفحات اصلی سایت، نوشته‌ها و پیشخوان را دوباره آزمایش کنید.

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

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

اگر فعال بودن WP Rocket باعث شده حتی به بخش مدیریت وردپرس دسترسی نداشته باشید، می‌توانید افزونه را به‌صورت موقت از طریق File Manager هاست یا FTP غیرفعال کنید.

مرحله اول: وارد File Manager هاست شوید و به مسیر زیر بروید:

wp-content/plugins/

مرحله دوم: پوشه زیر را پیدا کنید:

wp-rocket

مرحله سوم: نام پوشه را موقتاً به چیزی مانند زیر تغییر دهید:

wp-rocket-off

با این کار وردپرس دیگر قادر به بارگذاری WP Rocket نیست و معمولاً دسترسی به پیشخوان دوباره برقرار می‌شود.

مرحله چهارم: وارد پیشخوان شوید و مطمئن شوید WP Rocket غیرفعال شده است.

مرحله پنجم: نام پوشه را دوباره به wp-rocket برگردانید، اما هنوز افزونه را فعال نکنید.

مرحله ششم: WP Rocket را به نسخه 3.23.2.2 یا بالاتر بروزرسانی کنید و سپس افزونه را فعال کنید.

آیا لازم است فایل Cloudflare.php را ویرایش کنیم؟

در زمان بروز اولیه این مشکل، یکی از راه‌حل‌های موقت این بود که مقدار $key قبل از ورود به تابع substr() به String تبدیل شود.

کد مشکل‌دار به این شکل بود:

if ( substr( $key, - strlen( $method ) ) !== $method ) {

و اصلاح موقت آن به این شکل انجام می‌شد:

if ( substr( (string) $key, - strlen( $method ) ) !== $method ) {

اما در حال حاضر توصیه نمی‌کنیم این روش را به‌عنوان راه‌حل اصلی انجام دهید. چون نسخه رسمی اصلاح‌شده WP Rocket منتشر شده است و ویرایش مستقیم فایل‌های افزونه چند مشکل دارد:

  • در بروزرسانی بعدی افزونه تغییرات شما از بین می‌رود.
  • اشتباه در ویرایش PHP ممکن است خطای جدیدی ایجاد کند.
  • نسخه نصب‌شده سایت با نسخه رسمی افزونه متفاوت می‌شود و عیب‌یابی بعدی دشوارتر خواهد شد.

بنابراین ویرایش دستی کد فقط می‌تواند یک راه‌حل موقت برای شرایط خاص باشد؛ راه‌حل دائمی، استفاده از نسخه اصلاح‌شده WP Rocket است.

آیا مشکل به خاطر Cloudflare است؟

وجود عبارت Cloudflare در نام فایل لزوماً به این معنی نیست که حساب Cloudflare، DNS یا CDN شما خراب شده است. این خطا مربوط به بخشی از کد سازگاری WP Rocket با Cloudflare بوده است.

WP Rocket به‌طور کلی با Cloudflare سازگار است و استفاده هم‌زمان از این دو سرویس به‌خودی‌خود مشکل محسوب نمی‌شود. بنابراین بدون دلیل مشخص تنظیمات DNS، Proxy یا CDN سایت را تغییر ندهید.

اگر بعد از بروزرسانی WP Rocket همچنان مشکل داشتید، آن زمان می‌توان مواردی مانند تنظیمات کش Cloudflare، APO، Cache Rules و هماهنگ‌سازی پاک‌سازی Cache بین دو سرویس را جداگانه بررسی کرد.

بعد از بروزرسانی WP Rocket چه کارهایی انجام دهیم؟

بعد از نصب نسخه اصلاح‌شده بهتر است این مراحل را هم انجام دهید:

  1. کش WP Rocket را کامل پاک کنید.
  2. اگر از Cloudflare استفاده می‌کنید، در صورت نیاز کش آن را نیز پاک کنید.
  3. صفحه اصلی و چند صفحه داخلی سایت را در حالت ناشناس مرورگر بررسی کنید.
  4. وارد پیشخوان وردپرس شوید و چند بخش مدیریتی را آزمایش کنید.
  5. لاگ خطاهای PHP را بررسی کنید تا مطمئن شوید خطای Cloudflare.php مجدداً ایجاد نمی‌شود.

اگر در حال بررسی مشکلات سرعت و Core Web Vitals سایت هستید، مطالعه مقاله مربوط به خطای Ensure text remains visible during webfont load و بهینه‌سازی font-display نیز می‌تواند مفید باشد.

اگر بعد از بروزرسانی همچنان خطای WP Rocket وجود داشت چه کنیم؟

اگر WP Rocket را به نسخه جدید بروزرسانی کرده‌اید اما سایت همچنان Critical Error دارد، نباید فرض کنیم خطا همان مشکل Cloudflare.php است.

در این شرایط ابتدا لاگ PHP را بررسی کنید. نام فایل، شماره خط و متن دقیق خطا مشخص می‌کند مشکل واقعاً از WP Rocket است یا افزونه، قالب یا بخش دیگری از سایت باعث خطا شده است.

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

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

سؤالات متداول درباره خطای WP Rocket و Cloudflare.php

آیا پاک کردن Cache مشکل WP Rocket در وردپرس ۷.۱ را حل می‌کند؟

اگر خطا مربوط به باگ Cloudflare.php در نسخه‌های مشکل‌دار WP Rocket باشد، پاک کردن Cache به‌تنهایی مشکل اصلی را حل نمی‌کند. برای رفع دائمی باید WP Rocket را به نسخه 3.23.2.2 یا جدیدتر بروزرسانی کنید.

آیا باید فایل Cloudflare.php را ویرایش کنیم؟

در حالت عادی خیر. اکنون که نسخه اصلاح‌شده WP Rocket منتشر شده است، بروزرسانی افزونه روش مناسب‌تری است. ویرایش مستقیم فایل فقط یک راه‌حل موقت برای شرایط خاص محسوب می‌شود.

اگر پیشخوان وردپرس باز نشود چطور WP Rocket را غیرفعال کنیم؟

از File Manager هاست یا FTP وارد پوشه افزونه‌ها شوید و نام پوشه wp-rocket را موقتاً تغییر دهید. با این کار افزونه غیرفعال می‌شود و می‌توانید دوباره وارد پیشخوان شوید.

آیا برای رفع این خطا باید Cloudflare را غیرفعال کنیم؟

خیر. صرفاً وجود عبارت Cloudflare.php در متن خطا به معنی خراب بودن Cloudflare نیست. ابتدا نسخه WP Rocket را بررسی و بروزرسانی کنید و فقط در صورت باقی ماندن مشکل سراغ عیب‌یابی تنظیمات Cloudflare بروید.

کدام نسخه WP Rocket مشکل وردپرس ۷.۱ را رفع کرده است؟

طبق اعلام WP Rocket، اصلاح این Fatal Error از نسخه 3.23.2.2 در افزونه قرار گرفته است. بنابراین بهتر است از همین نسخه یا نسخه جدیدتر استفاده کنید.

جمع‌بندی

اگر بعد از بروزرسانی به وردپرس ۷.۱ با Fatal Error مربوط به Cloudflare.php و تابع substr() مواجه شده‌اید، در بیشتر موارد نیازی به تغییر Cloudflare یا ویرایش دستی فایل‌های WP Rocket ندارید.

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

ویرایش دستی خط ۵۶۲ می‌تواند در مواقع خاص به‌عنوان یک راه‌حل موقت استفاده شود، اما با توجه به انتشار نسخه اصلاح‌شده، بهتر است فایل اصلی افزونه بدون ضرورت تغییر داده نشود.

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

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

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

فهرست این مقاله

پروژه مشابهی در ذهن دارید؟

برای طراحی سایت، توسعه وردپرس یا اتصال نرم‌افزارها، شرح نیازتان را با من در میان بگذارید.

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

تجربه‌های عملی در توسعه PHP، وردپرس، ووکامرس و ارتباط بین سامانه‌ها.

از مطالعه تا اجرا

برای آشنایی با خدمات و مشاهده نمونه‌کارهای واقعی، مسیر زیر را دنبال کنید.