مشاوره رایگان
دریافت لینک های دانلود دریافت پستی درب منزل مبلغ کل: تومان
جهت دریافت کد تخفیف به کانال تلگرام مراجعه و یا با پشتیبان آنلاین هماهنگ نمایید

آموزش مدیریت خطا در PHP به همراه مثال های کاربردی


با استفاده از فیلم های آموزشی تولید شده توسط کلیک سایت، به راحتی می توانید آموزش مدیریت خطا در PHP به همراه مثال های کاربردی را آموزش ببینید. در ادامه دعوت می شود که فیلم دمو (بخش اول آموزش) را در زیر مشاهده نمایید.


سیستم مدیریت خطای پیش فرض(default error handling) در PHP بسیار ساده است. یک پیام خطا با نام فایل، شماره خط و یک توصیفی از پیام خطا، به مرورگر ارسال می شود.

مدیریت خطا (Error Handling) در php

هنگام ایجاد اسکریپت ها و برنامه های کاربردی وب، مدیریت خطا(Error Handling )، بخش مهمی از کد را تشکیل می دهد. اگر کد شما فاقد کدهای چک کردن خطا باشد، برنامه شما بسیار غیر حرفه ای به نظر می رسد و ممکن است با خطرات امنیتی زیادی روبه رو شود.

این آموزش شامل برخی از رایج ترین متدهای بررسی خطا در PHP می باشد.

دراین بخش از آموزش php، ما روش های مختلفِ مدیریتِ خطا را نشان می دهیم. این متدها عبارتند از :

  • دستورات ساده با تابع "die()"
  • error های گوناگون و بررسی فعال کننده خطا (error triggers)
  • گزارش کردن خطاها یا (error reporting)

 

روش پایه مدیریت خطا با استفاده از تابع die () در php

مثال، یک اسکریپت ساده را نشان می دهد که یک فایل متنی(text file) را باز می کند:

<?php
$file=fopen("notebook.txt","r");
?>

اگر فایل وجود نداشته باشد شما ممکن است چنین خطایی را دریافت کنید:

Warning: fopen(notebook.txt) [function.fopen]: failed to open stream:

No such file or directory in C:\myfolder\test.php on line 2

برای جلوگیری از دریافت پیام خطایی مانند پیام خطای بالا، باید قبل از باز کردن فایل، بررسی کنیم آیا چنین فایلی وجود دارد یا خیر و اگر چنین فایلی وجود داشت اقدام به باز نمودن آن کنیم.

<?php
if(!file_exists("notebook.txt")) {
  die("File not found");
} else {
  $file=fopen("notebook.txt","r");
}
?>

حال اگر فایل وجود نداشته باشد شما یک خطا مانند خطای زیر را دریافت خواهید کرد:

File not found

کد بالایی، کارایی بیشتری نسبت به کد قبلی دارد، چرا که از یک مکانیزم ساده خطا استفاده می کند تا مانع از اجرای اسکریپت، پس از خطا شود.

با این حال، متوقف کردن اسکریپت، همیشه راه مناسبی برای مدیریت خطا نیست. بیایید نگاهی به توابع جایگزین php برای مدیریت خطاها داشته باشیم.

ساخت یک مدیریت کننده خطای سفارشی (Custom Error Handling)

ایجاد یک مدیریت کننده سفارشی خطا (Custom Error Handling) بسیار ساده است. ما به سادگی یک تابع خاص ایجاد می کنیم که وقتی یک خطا اتفاق می افتد، می تواند فراخوانی شود. این تابع باید بتواند حداقل دو پارامتر درجه خطا(error level) و پیام خطا(error message) را مدیریت کند، اما می تواند تا پنج پارامتر (پارامترهای اختیاری مانند : نام فایل، شماره خطی که خطا در آن رخ داده است و محتویات خطا) را نیز دریافت کند.

Syntax

error_function(error_level,error_message,
error_file,error_line,error_context)

پارامترها

توضیحات

error_level

الزامی. درجه گزارش خطا را برای error  موردنظرِ کاربر مشخص می کند. این مقدار باید یک مقدار عددی باشد. در جدول بعدی درجه خطاها در php بیان شده است.

error_message

الزامی. پیام خطا را برای خطایِ کاربر تعیین می کند.

error_file

اختیاری. نام فایلی که خطا در آن رخ داده است را مشخص می کند.

error_line

اختیاری. شماره خطی که در آن خطا اتفاق افتاده است را مشخص می کند.

error_context

اختیاری. این پارامتر یک آرایه است که نام و مقدار همه متغیرهای برنامه را در هنگام بروز خطا ثبت و نگهداری می کند.

 

درجه گزارش خطا (Error Report levels) در php

هر خطایی که در php رخ می دهد یک درجه یا سطح یا level ی دارد. این درجه گزارش خطاها، انواع مختلفی از خطاها هستند، که در لیست زیر نشان داده شده است:

مقدار

ثابت

توضیحات

2

E_WARNING

خطاهایی که در زمان اجرا غیرمخرب (Non-fatal) هستند. با این خطاها ، اجرای اسکریپت متوقف نمی شود.

8

E_NOTICE

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

256

E_USER_ERROR

خطای مرگباری، که توسط کدکاربر تولید می شود. خطاها مانند یک  E_ERROR هستند که توسط کاربر و با استفاده از تابع trigger_error() به وجود آمده اند.

512

E_USER_WARNING

هشدار غیرمخربی (Non-fatal) که توسط کد کاربر تولید می شود. این نوع اخطارها مثل یک E_WARNING هستند که توسط کاربر و با استفاده از تابع trigger_error() به وجود آمده اند.

1024

E_USER_NOTICE

اعلان های غیرمخربی که توسط کد کاربر تولید می شود. این نوع اعلان ها ، توسط کاربر و با استفاده از تابع trigger_error() به وجود آمده اند.

4096

E_RECOVERABLE_ERROR

این درجه خطا شامل خطاهای مخرب(fatal error) ولی قابل ردیابی است. این نوع error همانند یک E_ERROR است که توسط یک تابع مدیریت خطا (همانند Set_error_handler) شناسایی شده است.

8191

E_ALL

تمام خطاها و هشدارهای رخ داده شده در سطح برنامه هستند (E_STRICT بخشی از E_ALL در PHP 5.4 شد)

 

اکنون اجازه می دهید تا یک تابع برای مدیریت خطاها ایجاد کنیم، کد تابع به صورت زیر است :

function customError($errno, $errstr) {
  echo "<b>Error:</b> [$errno] $errstr<br>";
  echo "Ending Script";
  die();
}

کد بالا یک تابع ساده مدیریت خطا (error handling) است. هنگامی که آن را فعال می کنیم، درجه خطا و یک پیام خطا دریافت می کند. سپس درجه خطا و پیام را نشان می دهد و اسکریپت را خاتمه می دهد.

حالا ما یک تابع مدیریت خطا ایجاد کرده ایم باید تصمیم بگیریم که چه زمانی باید آن را، فراخوانی و اجرا(triggere) کنیم.

 

تنظیم تابع مدیریت خطا در PHP :

به طور پیش فرض در php یک تابع مدیریت خطا ساخته شده است. اما ما قصد داریم، تا خودمان تابع مدیریت خطا بسازیم و آن را به عنوان تابعِ مدیریتِ پیش فرضِ خطا، در برنامه قرار دهیم.

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

set_error_handler("customError");

از آنجا که ما می خواهیم تابع سفارشی ما تمام اشتباهات را مدیریت کند، set_error_handler()  تنها نیاز به یک پارامتر دارد، پارامتر دوم برای تعیین درجه خطا می تواند اضافه شود.

مثال:

در این مثال قصد داریم تا با تابع مدیریت خطا، متغیری که وجود ندارد را چاپ کنیم:

<?php
//error handler function
function customError($errno, $errstr) {
  echo "<b>Error:</b> [$errno] $errstr";
}

//set error handler
set_error_handler("customError");

//trigger error
echo($test);
?>

خروجی کد مثال فوق به صورت زیر خواهد بود :

Error: [8] Undefined variable: test

راه اندازی یک خطا(Trigger an Error)

در یک اسکریپتی که کاربران می توانند داده هایی را داخل inputها وارد کنند، زمانی که یک ورودی غیر قانونی داشته باشیم، فعال کردن errorها میتواند کار بسیار مفیدی باشد. در PHP این کار به وسیله تابع trigger_error() انجام می شود.

مثال

در این مثال اگر متغیر "test" بزرگتر از "1" باشد خطایی رخ می دهد:

<?php
$test=2;
if ($test>1) {
  trigger_error("Value must be 1 or below");
}
?>

خروجی کد بالا باید چیزی شبیه به این می باشد:

Notice: Value must be 1 or below

in C:\myfolder\test.php on line 6

یک خطا(error) را می توانید در هر نقطه ای در یک اسکریپت فعال و فراخوانی(trigger) کنید. و با اضافه کردن یک پارامتر دوم، می توانید درجه خطا (error level) را تعیین کنید.

انواع خطاهای احتمالی  عبارت اند از:

E_USER_ERROR : خطایی(Fatal Error) که زمان اجرا، توسط کد کاربر ایجاد شده است. خطاهایی که قابل برگشت نیستند (نمی توان برنامه را به نقطه بروز خطا باز گرداند) و اجرای اسکریپت متوقف می شود.

E_USER_WARNING : هشدارهایی(Non-fatal) که زمان اجرا توسط کد کاربر ایجاد شده است. ولی باعث توقف اجرای اسکریپت نمی شوند.

 

E_USER_NOTICE : پیش فرض کلیه Error ها می باشد. یک اعلان است که در هنگام بروز خطا در کدِ در حال اجرا صادر می شود.

مثال

در این مثال، اگر متغیر "test" بزرگتر از "1" باشد، E_USER_WARNING رخ می دهد. اگر یک E_USER_WARNING اتفاق بیفتد ما از تابع مدیریت خطای مورد نظر خود استفاده خواهیم کرد و این اسکریپت را پایان خواهیم داد:

<?php
//error handler function
function customError($errno, $errstr) {
  echo "<b>Error:</b> [$errno] $errstr<br>";
  echo "Ending Script";
  die();
}

//set error handler
set_error_handler("customError",E_USER_WARNING);

//trigger error
$test=2;
if ($test>1) {
  trigger_error("Value must be 1 or below",E_USER_WARNING);
}
?>

خروجی کد بالا باید چیزی شبیه به این می باشد:

Error: [512] Value must be 1 or below
Ending Script

حالا که آموختیم خودمان، خطاها را ایجاد و طراحی کنیم و چگونه آنها را به کار ببریم، اجازه دهید که نحوه ثبت کردن خطا یا (error logging) را نیز آموزش دهیم.

ثبت خطا یا error logging

به طور پیش فرض PHP یک کد ثبت خطا (error-log) را به سیستم خطاها (server's logging system) یا به یک فایل خاصی ارسال می کند. و این بستگی به نحوه تنظیم پیکربندی  error_log در فایل php.ini دارد.

با استفاده از تابع error_log () شما می توانید Error log ها را به یک فایل مشخص شده یا یک مقصد از راه دور ارسال کنید.همچنین ارسال پیام های خطا به خودتان از طریق ایمیل، می تواند یک راه بسیار مطمئن جهت اطلاع از بروز خطا در سیستم باشد.

ارسال یک پیام خطا (Error Message) توسط ایمیل

در مثال زیر اگر یک خطای خاص رخ دهد ما یک ایمیل با پیغام خطا برای کاربر ارسال می کنیم و اسکریپت را پایان خواهیم داد:

<?php
//error handler function
function customError($errno, $errstr) {
  echo "<b>Error:</b> [$errno] $errstr<br>";
  echo "Webmaster has been notified";
  error_log("Error: [$errno] $errstr",1,
  "someone@example.com","From:clicksite.ir@gmail.com");
}

//set error handler
set_error_handler("customError",E_USER_WARNING);

//trigger error
$test=2;
if ($test>1) {
  trigger_error("Value must be 1 or below",E_USER_WARNING);
}
?>

خروجی کد بالا باید چیزی شبیه به این می باشد:

Error: [512] Value must be 1 or below
Webmaster has been notified

و ایمیل دریافت شده توسط کاربر (از کد بالا) به شرح زیر است:

Error: [512] Value must be 1 or below

این روش( ارسال خطا به وسیله ایمیل ) نباید برای تمام خطاها استفاده شودو برای موارد حیاتی باید مورد استفاده قرار بگیرد. مابقی error ها را بایستی توسط سیستم ثبت کننده خطاهای PHP در فایل log ذخیره نمود.

 

فصلِ: 1 , تعداد قسمت ها: 7 , سطح: صفر تا صد
موضوعات: آموزش PHP

این فصل در یک نگاه:

در این مجموعه به ساخت سیستم نظردهی در php می پردازیم.…

بنا به درخواست یکی از کاربران گرامی سایت (امیر تجاره) طی چند مجموعه آموزشی قصد داریم نحوه ساخت و پیاده سازی سیستم ثبت نظرات و هم چنین نحوه ثبت پاسخ به هر نظر را مورد بررسی قرار دهیم. این مج…
فصلِ: 1 , تعداد قسمت ها: 2 , سطح: صفر تا صد
موضوعات: آموزش PHP

این فصل در یک نگاه:

در این مجموعه به آموزش ارسال ایمیل در phpmailer می پردازیم.یکی از مزایای phpmailer و ارسال ایمیل در php با استفاده از ph…

بی شک ارسال ایمیل php از مهم ترین توانایی های یک برنامه نویس php  به شمار می رود. این ایمیل می تواند برای تبلیغات و یا اطلاع رسانی و موارد بسیار زیادی به کار رود. در php روش های مختلفی برای…
فصلِ: 2 , تعداد قسمت ها: 232 , سطح: صفر تا صد

این فصل در یک نگاه:

در این فصل به معرفی پایگاه داده می پردازیم و با مفهوم دیتابیس و پایگاه های داده آشنایی پیدا می کنیم.…

آیا اصلا من میتونم یک طراح سایت و برنامه نویس بشم؟ آیا یادگیری طراحی سایت سخته ؟ آیا باید حتما زبان انگلیسی رو مسلط باشم؟ آیا حتما نیاز هست که رشته کامپیوتر باشم ؟ آیا یادگیری برنامه نویسی …
فصلِ: 2 , تعداد قسمت ها: 119 , سطح: صفر تا صد

این فصل در یک نگاه:

در این فصل با زبان سمت سرور PHP آشنا می شویم و توابع و دستورات مهم این زبان برنامه نویسی را بررسی خواهیم کرد…

  بنام خدا   با سلام خدمت تمامی دوستان عزیز کلیک سایت. بسیار خرسندیم که با یک دوره پروژه محور دیگر در خدمت شما دوستان محترم هستیم که انشالله قرار است قدم بگذاریم به دنیای بسیار جذاب و مح…
فصلِ: 2 , تعداد قسمت ها: 100 , سطح: صفر تا صد

این فصل در یک نگاه:

در این فصل می آییم یک سایت بلاگ با cms اختصاصی را پیاده سازی می کنیم که هم مروری باشه برای زبان برنامه نویسی PHP و هم شم…

توجه: این دوره دائما توسط مهندس روشنایی (مدرس دوره) بروز گردیده و مطابق با آخرین استانداردهای برنامه نویسی آپدیت می شود. توجه فرمائید دریافت آپدیت ها برای خریداران قبلی رایگان می باشد و نیاز…
فصلِ: 3 , تعداد قسمت ها: 169 , سطح: مقدماتی
موضوعات: آموزش PHP آموزش PHP

این فصل در یک نگاه:

آشنایی با دستورات html ، css و js و انجام مینی پروژه سامانه نمرات دانش آموزان مدرسه آلفا…

توضیحات کلی مجموعه: در این دوره به مفاهیم و توابع php و mysql پرداخته شده و این دوره منتج به تولید یک پروژه بزرگ نخواهد شد در پایان این دوره یک مینی پروژه مثل سامانه کارنامه دانش آموزان مدر…
فصلِ: 1 , تعداد قسمت ها: 19 , سطح: متوسط

این فصل در یک نگاه:

وب سایت فروشگاهی خود را بدون دانش برنامه نویسی و بدون پیش نیاز طراحی کنید.فروشگاه اینترنتی با افزونه ووکامرس که به شهرت …

راه اندازی فروشگاه اینترنتی در وردپرس با افزونه ووکامرس آموزش حرفه ای فروشگاه ساز وردپرس با افزونه ووکامرس           آخرین باز تولید آموزش ویدیویی ووکامرس در  1396/11/15  صورت گرفت.       …
فصلِ: 14 , تعداد قسمت ها: 188 , سطح: صفر تا صد

این فصل در یک نگاه:

سلام . پیشنهاد میکنم حتما دموی دوره رو مشاهده کنید درباره فریم ورک Yii: در پاسخ به سوالات : آیا این فریم ورک سریع است؟ آیا این یک فریم ورک امن است؟ آیا این یک فریم ورک حرفه ای است؟ آیا ا…
فصلِ: 28 , تعداد قسمت ها: 253 , سطح: صفر تا صد

این فصل در یک نگاه:

آشنایی با امکانات جدید لاراول ۷…

برخی از سرفصل های این پکیج آموزشی :   لاراول چیست و چرا ما لاراول استفاده میکنیم کامپوزر کارش چیه و نصب اون نصب لاراول آموزش نصب لاراول از طریق اینستالر آموزش نصب لاراول با استفاده ا…
فصلِ: 1 , تعداد قسمت ها: 6 , سطح: صفر تا صد

این فصل در یک نگاه:

داشتن یک اپلیکیشن موبایل برای وب سایت به برند سازی و اعتبار وب سایت بهبود و تسریع می بخشد لذا توصیه می شود با وجود همگان…

  دوره آموزش طراحی و ساخت اپلیکیشن موبایل برای وب سایت   قطعا شما هم دوست دارید برای وب سایت خود اپلیکیشن بسازید و پس از پیگیری متوجه شدید که هزینه ای بیش از 5.000.000 تومان باید پرداخت بکن…
فصلِ: 9 , تعداد قسمت ها: 215 , سطح: صفر تا صد

این فصل در یک نگاه:

در اصل فصل در مورد performance صحبت خواهیم کرد :-React Performance-Lazy-Error Boundaries و سایت را بر روی هاست واقعی قرا…

با سلام خدمت کلیک سایتی های عزیز، به دوره ی صفر تا صد طراحی سایت با react js خوش آمدید. نکته:این دوره کاملا پروژه محور میباشد نکته:این دوره هیچ پیش نیازی ندارد ReactJS  چیست؟ ReactJS اس…
فصلِ: 11 , تعداد قسمت ها: 162 , سطح: صفر تا صد

این فصل در یک نگاه:

در این فصل(فصل یازدهم مجموعه)،به طراحی CMS (سیستم مدیریت محتوا)اختصاصی فروشگاه می پردازیم.هدف از طراحی این بخش،آنست که م…

در این مجموعه آموزشی قصد داریم از صفر تا صد طراحی یک فروشگاه اینترنتی رو به صورت کامل آموزش بدهیم.این فروشگاه شامل تمامی بخش های مورد نیاز یک فروشگاه اینترنتی است. هدف از این مجموعه،آموزش…
فصلِ: 1 , تعداد قسمت ها: 4 , سطح: متوسط

این فصل در یک نگاه:

در بازاریابی نوین روش جدیدی ابداع شده که این روزا ها بسیار کسب و کارهای اینترنتی را با هزینه بسیار بسیار پایین و بازدهی …

توضیحات کلی مجموعه: (توجه: حتما با کلیک روی عکس این دوره آموزشی در بالا دمو را مشاهده کنید یا قسمت اول را رایگان دانلود کنید) در بازاریابی اینترنتی هر روز شاهد روش های جدید و استراتژی های ن…
فصلِ: 4 , تعداد قسمت ها: 240 , سطح: صفر تا صد

این فصل در یک نگاه:

طراحی پنل مدیریت(دسته بندی)- دسته بندی یا category - نمایش دسته های فرعی در view با ورود به یکی از دسته های اصلی و آشن…

توضیحات کلی مجموعه: این مجموعه توسط فریمورک محبوب و دوست داشتنی bootstrap  و به صورت تضمینی  و صفر تا صد جهت یادگیری کارآموزان عزیز ارائه گردیده و دوستانی که این دوره را به طور کامل و دقیق…
فصلِ: 8 , تعداد قسمت ها: 77 , سطح: صفر تا صد

این فصل در یک نگاه:

  پیشنهاد میکنیم دمو دوره رو حتما مشاهده کنید با سلام خدمت دوستان عزیز . ابتدا عرض کنم که این دوره برای دوستانی آماده شده که میخوان وب اپلیکیشن های مدرنی رو طراحی بکنن و وارد بازار کار ط…
فصلِ: 5 , تعداد قسمت ها: 25 , سطح: صفر تا صد

این فصل در یک نگاه:

فصل پنجم…

توضیحات کلی مجموعه: درباره گیت: لذت پیش بردن پروژه های برنامه نویسی خود را با بهترین ورژن کنترل سیستم جهان تجربه کنید کامل ترین دوره ی آموزشی گیت و گیت هاب به همراه مثال های کاربردی گی…
فصلِ: 5 , تعداد قسمت ها: 201 , سطح: صفر تا صد

این فصل در یک نگاه:

ایجاد پروژه آژانس مسافرتی.....…

فصل اول: آشنایی با مبانی برنامه نویسی اندروید   آشنایی با معماری برنامه های اندرویدی ساخت شبیه ساز جهت تست پروژه اندروید آشنایی با دستور Toast و حلقه for در برنامه های اندروی…
فصلِ: 1 , تعداد قسمت ها: 2 , سطح: متوسط

این فصل در یک نگاه:

بهترین و پر بازده ترین روش تبدیل بازدیدکننده سایت به مشتری تبلیغات هدفمند و برند سازی هوشمندانه با ایمیل می باشد. ایمیل…

  وبینار(سمینار آنلاین) آموزش تکنیک های ایمیل مارکتینگ   اگر تا انتها این متن را مطالعه کنید نظر شما در مورد ایمیل مارکتینگ 180 درجه عوض می شود!! بر هیچکس پوشیده نیست که از سال 1972 که ای…
فصلِ: 4 , تعداد قسمت ها: 368 , سطح: صفر تا صد

این فصل در یک نگاه:

مباحث تکمیلی فریم ورک لاراول…

فصل اول :آموزش مقدماتی فریم ورک لاراول معرفی فریم ورک لاراول و پیشنیازهای انجام کار انجام کانفیگ های اولیه برای نصب و راه اندازی فریم ورک معرفی روش های نصب پروژه لاراولی از طریق سایت گی…
فصلِ: 1 , تعداد قسمت ها: 155 , سطح: صفر تا صد

این فصل در یک نگاه:

مباحث مقدماتی فریم ورک react.js…

توضیحات کلی مجموعه: فصل اول : آشنایی با مباحث مقدماتی فریم ورک react.js نصب و راه اندازی node.js  و کلیه پیش نیازهای لازم نصب فریم ورک react روی لوکال و انجام تست های لازم آغاز آشنایی …

تولید شده توسط کلیک سایت

پشتیبانی آنلاین
آماده پاسخگویی هستیم
انتخاب تصویر جهت ارسال:
در حال ضبط صدا

(جهت توقف و یا لغو ضبط از دکمه های زیر استفاده کنید)

توقف و ارسال :
لغو ضبط
در حال حاضر تمامی کارشناسان آفلاین هستند. همواره می توانید با شماره تلگرام / واتساپ 09010005000 به صورت آنلاین با ما در ارتباط باشید. جهت ورود به واتساپ کلیک کنید
0 پیام جدید
پشتیبان در حال تایپ ...
ارسال تصویر ضبط صدا
0 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید