محتوای آموزشی وبلاگ نتآرام
بعد از ارتقای PHP ممکن است در صفحه سایت یا گزارش خطا پیامی مانند
Deprecated: Creation of dynamic property ببینید. این پیام میگوید کد برای یک شیء، ویژگیای ساخته که در تعریف آن کلاس از قبل اعلام نشده است. از PHP 8.2 ساخت چنین ویژگیهایی در بسیاری از کلاسها منسوخ اعلام شده است. هشدار لزوماً به معنی هک شدن یا توقف فوری سایت نیست، اما باید کد مسئول را اصلاح کرد تا با نسخههای جدید سازگار بماند.نام کلاس، نام ویژگی، مسیر فایل و شماره خط در پیام معمولاً کمک میکنند منبع را پیدا کنید. گزارش ممکن است مسیرهای خصوصی را آشکار کند؛ متن کامل را در شبکههای عمومی منتشر نکنید و نسخه پشتیبان قابل بازیابی داشته باشید.
۱. مسیر خطا متعلق به کدام بخش است؟
اگر پیشخوان وردپرس باز میشود، نسخه وردپرس، قالب و افزونهها را یادداشت کنید. مسیر خطا در پوشه
wp-content/plugins معمولاً به یک افزونه و مسیر wp-content/themes معمولاً به قالب اشاره دارد. مسیر داخل هسته وردپرس یا کتابخانه مشترک همیشه ثابت نمیکند همان بخش آغازگر خطاست؛ زمان وقوع و پشته خطا را هم در نظر بگیرید.اگر هشدار فقط پس از بازکردن یک برگه، ثبت فرم یا اجرای یک کار خاص ظاهر میشود، همان مراحل را در محیط آزمایشی تکرار کنید. از راهنمای دیدن گزارش خطای خصوصی وردپرس برای پیدا کردن گزارش استفاده کنید. خطا نباید به بازدیدکنندگان عمومی نمایش داده شود؛ ثبت خصوصی و محدودشده برای عیبیابی مفید است.
۲. نسخه سازگار افزونه یا قالب را امتحان کنید
سادهترین اصلاح برای کدی که خودتان مالک آن نیستید، معمولاً نصب نسخه سازگار و معتبر همان افزونه یا قالب است. در محیط آزمایشی از افزونهها یا بخش بهروزرسانی قالب، نسخه جدید را پس از بررسی سازگاری نصب کنید و همان مسیر ایجاد خطا را تکرار کنید. اگر هشدار برطرف شد، عملکردهای مهم مانند ورود، فرم و پرداخت را نیز تست کنید و بعد طبق برنامه سایت اصلی را بهروز کنید.
اگر نسخه سازگار وجود ندارد، نام کلاس و نسخه PHP را برای سازنده بفرستید و از او اصلاح بخواهید. تغییر مستقیم فایل افزونه خریداریشده ممکن است با بهروزرسانی بعدی از بین برود. در صورت نیاز، جایگزین معتبر را ابتدا در نسخه آزمایشی امتحان کنید. بازگشت به PHP منسوخ فقط برای ناپدید کردن پیام، میتواند سایت را در معرض آسیبپذیری قرار دهد؛ تصمیم نسخه باید براساس پشتیبانی و سازگاری کل سایت باشد.
۳. اگر کد متعلق به خودتان است
نمونه ساده زیر را در فایل آزمایشی PHP ببینید؛ این کد برای کپیکردن در قالب فروشگاه نیست:
کد / دستور<?php
class Customer {
public $name = '';
}
$customer = new Customer();
$customer->name = 'Sara';
در این نمونه ویژگی
name در خود کلاس تعریف شده و سپس مقدار میگیرد، پس این انتساب ویژگی پویا ایجاد نمیکند. اگر در کد خودتان خطا درباره ویژگی مشخصی است، ابتدا املای نام را با تعریف کلاس مقایسه کنید؛ گاهی یک غلط تایپی علت اصلی است. سپس در صورت مناسب بودن، ویژگی را با سطح دسترسی، نوع و مقدار اولیه سازگار با رفتار برنامه اعلام کنید. افزودن نوع سختگیرانه یا مقدار پیشفرض نامناسب میتواند بخش دیگری را خراب کند، پس تغییر را همراه با آزمون انجام دهید.برای دادههایی با نامهای واقعاً متغیر، ساختار داده مناسب یا روشهای طراحیشده کلاس را با برنامهنویس بررسی کنید. PHP راههایی مانند کلاس
stdClass، متدهای مخصوص و ویژگی AllowDynamicProperties دارد؛ این ویژگی یک راه سازگاری است، نه نسخهای که باید بدون بررسی به همه کلاسها اضافه شود. تفاوتها در مستندات رسمی ویژگیهای PHP شرح داده شده است.۴. اگر هشدار روی سایت دیده میشود
نمایش جزئیات خطا برای عموم را از مسیر تنظیمات امن همان محیط غیرفعال کنید و گزارش را در محل خصوصی نگه دارید. صرف خاموشکردن نمایش، علت ناسازگاری را برطرف نمیکند. در وردپرس تنظیمات اشکالزدایی و محل گزارش را طبق پیکربندی هاست و مستندات آن مدیریت کنید؛ فایل گزارش قابل دانلود عمومی نباشد و پس از پایان عیبیابی سطح گزارش متناسب تنظیم شود.
اگر بعد از بهروزرسانی، صفحه سفید یا خطای بحرانی میبینید، ابتدا سایت را با نسخه پشتیبان و روش بازیابی امن در دسترس نگه دارید و پیام دقیق را در گزارش بخوانید. هشدار منسوخشدن را با خطای کشنده دیگر یکی فرض نکنید.
۵. نتیجه را تأیید کنید
همان عملی را که قبلاً هشدار تولید میکرد چند بار در محیط آزمایشی انجام دهید و گزارش تازه را با زمان آزمون مقایسه کنید. نبود هشدار در صفحه کافی نیست؛ بررسی کنید در گزارش خصوصی نیز هشدار جدیدی برای همان کلاس و مسیر ثبت نشده و قابلیت مرتبط واقعاً درست کار میکند. پس از انتقال اصلاح به سایت اصلی، همان آزمون بیخطر را تکرار کنید.
برای میزبانی سایت وردپرسی، امکانات و نسخههای قابل پشتیبانی هاست وردپرس نتآرام را بررسی کنید. نسخه PHP استفادهشده توسط وب ممکن است با ترمینال تفاوت داشته باشد؛ راهنمای تشخیص نسخه PHP وب و CLI این تفاوت را توضیح میدهد.
مقاله قبلی
مقاله بعدی
دیدگاهها (۰)
دیدگاههای تاییدشده و پاسخهای تیم نتآرام
