بروز باگ خطرناک ووکامرس، منجر به ارسال گزارشهای متعدد از سراسر دنیا شده است. تحقیقات اولیه نشان داده است که منشا این اختلال، تنها یک خط کد ناقص در فایل BlockPatterns.php در مسیر woocommerce/src/Blocks/
بوده است. این کد باعث بروز ارور در فایل لاگ خطا شده است:
با وقوع این خطای مرگبار، آن هم بدون هشدار قبلی، نه تنها صفحه فروشگاه بلکه کل سایت وردپرس از کار میافتد و پیام معروف (خطای بحرانی در این وب سایت رخ داده است) به کاربران نمایش داده میشود. این مشکل بدون هیچ اقدام مستقیم از سوی مدیران سایتها رخ داده، که این موضوع بر نگرانیها افزوده است.
علت باگ خطرناک ووکامرس و واکنش جامعه توسعه دهندگان
در بررسی دقیقتر مشخص شد که تابع strpos()
در خط ۲۵۱ فایل مذکور، ورودی از نوع null
دریافت کرده، در حالی که انتظار دریافت یک رشته (string
) را دارد. علیت این وضعیت آن است که مقدار $category['title']
در برخی شرایط از API یا کش داخلی سایت مقداردهی نمیشود و در نتیجه تابع دچار خطا میشود.
در واکنش به این بحران، یکی از کاربران انجمن پشتیبانی وردپرس ضمن گزارش خطا، یک راه حل موقتی نیز ارائه داد. این اصلاح ساده با فزودن یک عملگر null coalescing (?? ''
) به متغیر مشکل دار، از وقوع خطا جلوگیری میکند. خط اصلاح شده به شکل زیر است:
این راه حل سریع به سرعت در میان کاربران دست به دست شد و بسیاری تاثیید کردند که با این تغییر ساده، سایتهایشان مجددا در دسترس قرار گرفتهاند.
واکنش رسمی ووکامرس به علت گستردگی این خطا
منظا اصلی بروز این خطا، پاسخهای ناقص از سوی مخزن الگوهای بلوکی ووکامرس بوده است. این مخزن که از راه دور داههای مرتبط با دسته بندی الگوها را تامین میکند، در برخی لحظات اطلاعات ناقصی برمیگرداند و در نبودبررسی نوع (type checking) مناسب در کد، تابع strpos
به خطا میخورد.
تیم رسمی ووکامرس با تایید این خطا، به سرعت اقدام به اطلاع رسانی در ریپازیتوری GitHub کرده و علاوه بر ارائه راه حل موقت، علام کردهاند که در حال آماده سازی پچ رسمی هستند.
در بیانیهای که همان صفحه منتشر شده، آمده است:
این خطا ناشی از پاسخ نادرست در مخزن الگوها بوده است. مشکل در سمت سرور ما اصلاح شده، اما برخی سایتها به دلیل کش محلی، خمچنان تحت تاثیر قرار دارند. بزودی یک پچ برای پاک سازی این کشها منتشر خواهد شد.
با توجه به عمق و گستردگی این خطا، ضروری است که تیم ووکامرس در نسخههای آتی، اقدامات جدیتر برای افزایش تاب آوری کد، اعتبار سنجی دقیقتر ورودیها و مدیریت بهینه کش اتخاذ کند.
تازمان انتشار پچ رسمی، به مدیران سایتها توصیه میشود:
خط کد را به صورت دستی اصلاح کنند؛ تمام لایههای کش را پاک کنند (شامل کش مرورگر، پلاگین، هاست و CDN)؛ سایت را در محیط staging تست کرده و سپس تغییرات را در سایت زنده اعمال کنند.
خطاهایی جزئی در نرم افزارهای منبع باز میتوانند پیامدهای گستردهای داشته باشند، به ویژه زمانی که اکوسیستم آنها پیچیده، پویا و متکی بر منابع خارجی است.
__ تکنو دات مرجع اخبار تکنولوژی __