زبان PHP

آموزش کامل رفع fatal error در PHP و وردپرس

در هر زبان برنامه‌نویسی، هنگام کامپایل، اگر مشکلی در کد وجود داشته باشد، با خطا (ارور) مواجه می‌شوید. این مشکلات می‌توانند شامل قطعه کد نادرست، اجرای کد در یک حلقه بی‌نهایت و سایر مواردی باشند که باعث بروز خطاها می‌شوند. یکی از خطاهای رایج در زمان کار یا حتی آموزش PHP، خطا (fatal error) است. در این مقاله، با ما همراه باشید تا نحوه رفع مشکلات را یاد بگیرید.

fatal error چیست؟ + مثال

خطاهای مهلک (fatal errors) در برنامه‌نویسی به خطاهایی اشاره دارند که باعث متوقف شدن اجرای برنامه و خروج از آن می‌شوند. این خطاها بیشتر به دلیل مشکلات جدی در کد یا محیط اجرای برنامه ایجاد می‌شوند و نمی‌توانند توسط خود برنامه برطرف شوند. در نتیجه، برنامه نمی‌تواند به صورت طبیعی ادامه یابد و متوقف می‌شود.

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

$number = 10;
$result = $number / 0;
echo $result;

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

Fatal error: Uncaught DivisionByZeroError: Division by zero in ...

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

آموزش کامل رفع خطای fatal error در PHP

برای رفع این خطا در PHP شما باید دو مراحل را طی کنید، در گام اول نیازی به کد نویسی نبوده و صرفا نیاز هست یک بار دیگر برخی اشتباهات رایج که موجب این خطا می شود را چک کنید:

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

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

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

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

try {
} catch (Exception $e) 

در گام دوم نیاز هست دست به کد شوید و با استفاده از امکانات PHP اقدام به رفع این خطا کنید:

استفاده از توابع خطاگیری سفارشی: شما می‌توانید توابع خطاگیری سفارشی بنویسید و آن‌ها را برای گرفتن و بررسی خطا در کد خود استفاده کنید. برای این کار، می‌توانید از تابع set_error_handler در PHP استفاده کنید.

function customErrorHandler($errno, $errstr, $errfile, $errline) {
    // 
}

set_error_handler("customErrorHandler");
```

استفاده از ابزارهای دیباگ: ابزارهای دیباگ مانند Xdebug می‌توانند به شما کمک کنند تا خطا را تحلیل کنید و جریان اجرای برنامه را بررسی کنید. این ابزارها امکاناتی مانند نمایش متغیرها، پشتیبانی از نقطه‌گذاری (breakpoint) و پیگیری اجرا (step-by-step) را فراهم می‌کنند.

بررسی نصب و تنظیمات PHP: ممکن است خطا به دلیل نصب ناقص یا تنظیمات نادرست PHP باشد. در این صورت، باید اطمینان حاصل کنید که نسخه مناسب PHP نصب شده است و تنظیمات آن درست است.

مثال کاربردی fatal error در PHP و راه حل آن

به عنوان یک مثال، فرض کنید ما یک تابع به نام calculateArea داریم که بر اساس طول و عرض داده شده، مساحت یک مستطیل را محاسبه می‌کند. حالا فرض کنید در کد خود اشتباهاً تابع calculateAra را به جای calculateArea فراخوانی کرده‌ایم. این باعث می‌شود که خطای “fatal error” در PHP رخ دهد.

function calculateArea($length, $width) {
    return $length * $width;
}

// Incorrect function invocation
$result = calculateAra(5, 10);
echo "Area: " . $result;

در این مثال، تابع calculateAra به جای calculateArea فراخوانی شده است. وقتی برنامه اجرا می‌شود، خطای (fatal error) ظاهر می‌شود و برنامه متوقف می‌شود. پیام خطا مشابه زیر خواهد بود:

Fatal error: Uncaught Error: Call to undefined function calculateAra() in /path/to/your/file.php:8

برای رفع این خطا، می‌بایست خط فراخوانی تابع را به شکل صحیح تصحیح کنیم و نام تابع را به calculateArea تغییر دهیم:

function calculateArea($length, $width) {
    return $length * $width;
}

// Function invocation with the correct name
$result = calculateArea(5, 10);
echo "Area: " . $result;

با اصلاح خط فراخوانی تابع، خطا “fatal error” برطرف شده و کد بدون مشکل اجرا خواهد شد.

رفع خطای fatal error در وردپرس 

یک مثال کاربردی از خطای “fatal error” در وردپرس می‌تواند مربوط به نصب یک پلاگین با نسخه ناهمسان با وردپرس باشد. به عنوان مثال، فرض کنید که شما یک پلاگین را نصب کرده‌اید که نسخه آن با نسخه وردپرس شما سازگار نیست و باعث بروز خطای “fatal error” می‌شود.

برای رفع این خطا، می‌توانید اقدامات زیر را انجام دهید:

  1. ورود به حالت عیب‌یابی: در صورتی که بعد از نصب یک پلاگین خطای “fatal error” رخ داده است، می‌توانید وارد حالت عیب‌یابی (Debug Mode) وردپرس شوید. برای این کار، فایل wp-config.php را در ریشه وبسایت خود پیدا کنید و قبل از خط /* That's all, stop editing! Happy blogging. */ کد زیر را اضافه کنید:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

بررسی فایل Log: پس از فعال‌سازی حالت عیب‌یابی، وردپرس خطاها را در فایل debug.log ثبت می‌کند. شما می‌توانید این فایل را در پوشه /wp-content/ پیدا کنید. باز کنید و به دنبال خطای مربوط به خطای “fatal error” بگردید. این خطا معمولاً شامل نام فایل و شماره خطای مربوطه است که به شما کمک می‌کند تا مشکل را پیدا کنید و آن را رفع کنید.

به‌روزرسانی پلاگین: اگر پلاگینی که باعث خطای “fatal error” می‌شود، نسخه قدیمی داشته باشد، ممکن است با به‌روزرسانی آن مشکل برطرف شود. در صورتی که ممکن است به‌روزرسانی پلاگین از طریق داشبورد وردپرس امکان‌پذیر نباشد، می‌توانید پوشه مربوط به پلاگین را با نسخه جدید جایگزین کنید.

پوشه پوسته را تغییر نام دهید: اگر خطای “fatal error” پس از فعال‌سازی یک پوسته جدید رخ داده است، می‌توانید به پوشه /wp-content/themes/ بروید و نام پوشه پوسته فعال خود را تغییر دهید. این کار باعث غیرفعال شدن پوسته فعلی و بازگشت به پوسته پیش‌فرض وردپرس می‌شود. سپس می‌توانید از طریق داشبورد وردپرس یک پوسته دیگر را فعال کنید و بررسی کنید که خطا رفع شده است یا خیر.

غیرفعال کردن پلاگین‌ها: اگر خطای “fatal error” پس از نصب یا به‌روزرسانی یک پلاگین رخ داده است، می‌توانید از طریق FTP به سرور دسترسی پیدا کنید و به پوشه /wp-content/plugins/ بروید. سپس تمام پوشه‌های پلاگین‌ها را به صورت موقت تغییر نام دهید تا آن‌ها را غیرفعال کنید. سپس وارد داشبورد وردپرس شوید و بررسی کنید که آیا خطا رفع شده است یا خیر. در صورتی که خطا رفع شود، می‌توانید به طور تدریجی پلاگین‌ها را دوباره فعال کرده و بررسی کنید که کدام پلاگین باعث خطا می‌شود.

بازگرداندن نسخه پیشین وردپرس: در صورتی که پس از به‌روزرسانی وردپرس خطای “fatal error” رخ داده است، می‌توانید به صورت دستی به نسخه پیشین وردپرس بازگردید. برای این کار، نسخه قبلی فایل‌های وردپرس را از نسخه‌های پشتیبانی شده دریافت کرده و با استفاده از FTP جایگزین فایل‌های فعلی شوند. سپس باید وارد داشبورد وردپرس شوید و همهٔ پلاگین‌ها و پوسته‌های فعال را بررسی کنید و اطمینان حاصل کنید که با نسخه قدیمی وردپرس سازگار هستند یا نه. در صورت سازگاری، می‌توانید به نسخه جدید وردپرس برگردید و پلاگین‌ها و پوسته‌ها را به‌روزرسانی کنید.

سخن پایانی

در این مقاله به بررسی مفهوم و رفع خطای “fatal error” در PHP و وردپرس پرداختیم . خطای “fatal error” یک خطای بحرانی است که در هنگام اجرای کدها و فایل‌های نامعتبر در PHP و وردپرس رخ می‌دهد. این مقاله به شما روش‌هایی را آموزش دادیم تا این خطا را برطرف کرده و برنامه‌های PHP و وبسایت‌های وردپرس خود را به درستی اجرا کنید. از روش های همچون بررسی دقیق خطا، اصلاح کدها و فایل‌های نامعتبر، به‌روزرسانی نسخه PHP و بررسی قالب‌ها و افزونه‌های وردپرس استفاده کردیم. با استفاده از روش‌های معرفی شده در این مقاله، می‌توانید خطای “fatal error” را برطرف کرده و عملکرد بهتری در برنامه‌نویسی PHP و استفاده از وردپرس داشته باشید.

پوریا گودرز

پوریا گودرز هستم‌ علاقه مند به مباحث‌ و‌‌ مشکلات مربوط به تکنولوژی و فناوری. همچنین اندک آشنایی در زمینه گرافیک دارم. امیدوارم بتونم مشکلات شما رو در این مباحث حل کنم . انتقادات خود را از بخش نظرات با من در میان بگذارید :)

نوشته های مشابه

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

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