آموزش رفع خطای افزونه راکت در وردپرس ۷.۱ (مشکل Cloudflare.php)
اگر شما هم سایت خود را به وردپرس ۷.۱ آپدیت کردهاید و ناگهان با صفحه سفید یا یک خطای مهلک (Fatal Error) مواجه شدهاید، اصلاً نگران نباشید! یکی از مشکلات شایعی که اخیراً پس از این بهروزرسانی برای بسیاری از کاربران افزونه کش موشک وردپرس (WP Rocket) پیش آمده، تداخل کدهای ماژول کلودفلر در این افزونه با ساختار جدید وردپرس و نسخههای جدید PHP است. در این مقاله قصد داریم در کمتر از ۲ دقیقه، این مشکل را ریشهیابی و حل کنیم تا سایت شما به حالت عادی برگردد.
شرح ارور (علائم خرابی)
معمولاً این خطا کل سایت و حتی پیشخوان وردپرس را از کار میاندازد و اگر حالت دیباگ (Debug) روشن باشد یا لاگ خطاهای هاست را بررسی کنید، با متن خطایی شبیه به این مواجه میشوید:
Fatal error: Uncaught TypeError: substr(): Argument #1 ($string) must be of type string, int given in /home/…/public_html/wp-content/plugins/wp-rocket/inc/ThirdParty/Plugins/CDN/Cloudflare.php:562
علت بروز این مشکل چیست؟
مشکل به خاطر سختگیری نسخههای جدید PHP است. در فایل Cloudflare.php افزونه راکت، تابعی به نام substr وجود دارد که وظیفه آن پردازش متون (String) است. اما در شرایطی خاص (هنگام پردازش هوکها)، یک عدد (Integer) به این تابع ارسال میشود. چون PHP 8 به بالا روی نوع دادهها حساس است، پردازش را متوقف کرده و خطای Fatal Error میدهد.
آموزش گامبهگام رفع خطای Cloudflare.php در افزونه راکت
برای حل این مشکل نیازی به حذف افزونه نیست، فقط کافیست متغیر ارسال شده را به متن تبدیل (Cast) کنیم. مراحل زیر را دنبال کنید:
مرحله اول: وارد کنترل پنل هاست خود (سیپنل، دایرکت ادمین و…) شوید و به بخش File Manager بروید.
مرحله دوم: به مسیر نصب وردپرس و سپس مسیر زیر بروید:
wp-content/plugins/wp-rocket/inc/ThirdParty/Plugins/CDN/
مرحله سوم: فایل Cloudflare.php را پیدا کرده و آن را برای ویرایش (Edit) باز کنید.
مرحله چهارم: به خط ۵۶۲ مراجعه کنید (یا با استفاده از کلیدهای Ctrl+F کلمه substr را جستجو کنید). در این خط، کد زیر را مشاهده میکنید:
if ( substr( $key, - strlen( $method ) ) !== $method ) {
مرحله پنجم: برای رفع خطا، فقط کافیست کلمه (string) را قبل از متغیر $key اضافه کنید. کد شما باید دقیقاً به این شکل تغییر کند:
if ( substr( (string)$key, - strlen( $method ) ) !== $method ) {
مرحله ششم: فایل را ذخیره (Save) کنید.
نتیجهگیری
به همین سادگی! حالا سایت خود را رفرش کنید؛ خواهید دید که سایت بدون هیچ مشکلی بالا میآید. نکته: این یک اصلاح دستی است و تیم توسعهدهنده WP Rocket احتمالاً در آپدیتهای بعدی این مشکل را در هسته افزونه برطرف خواهد کرد. بنابراین پس از انتشار آپدیت رسمی جدید، میتوانید افزونه را با خیال راحت بهروزرسانی کنید.
