PHP error types


PHP ကိုေလ႔လာတဲ႔ သူတစ္ေယာက္အဖို႔ Error မတက္ဖူးတဲ႔ သူမရွိဘူးလို႔ အာမခံပါတယ္။ လူတိုင္းၾကံဳရမွာပါ။ ဒါေပမယ့္ အမ်ားစုဟာ ဘာerror တက္တယ္ဆိုတာကို အေသးစိတ္ဖတ္ေလ႔မရွိပါဘူး။ သူတို႔ရ႕ဲ code အလုပ္လုပ္ဖို႔က ပထမဦးစားေပးေလ။ ဒီ error ကို သိဖို႔ထက္ ဒီ error ေပ်ာက္ဖို႔က အဓိက မဟုတ္လား။ဒါေပမယ့္ error ေတြအေၾကာင္းကို သိခ်င္လာတဲ႔တစ္ေန႔ ဒီ post ေလးကို ဆံုးေအာင္ ဖတ္ျဖစ္ၾကမယ္ထင္ပါတယ္။

ဘယ္ Programming မဆို error ဆိုတာျဖစ္လာႏိုင္တာမို႔ ေဖာ္ျပႏိုင္ဖို႔ နည္းလမ္းေတြရွိျပီးသားျဖစ္ပါတယ္။
PHP မွာ အေျခခံအားျဖင့္ error ကို သံုးမ်ိဳးခြဲျခားႏိုင္တယ္။

1.Notices
ဒီ error ကေတာ႔ အေရးမၾကီးတဲ႔ error မ်ိဳးပါ။ တန္ဖိုး assign မလုပ္ရေသးတဲ႔ variable တစ္ခုကို ယူသံုးမိရင္ ဒီလို error မ်ိဳးေတြ႔ရမွာပါ။ဒါပမယ့္ မရွင္းပဲေတာ႔ မထားပါနဲ႔။ error ဆိုတာရွိေကာင္းတဲ႔ အရာမဟုတ္ပါဘူး။
eg:
PHP Notice:  Use of undefined constant val - assumed 'val' in C:\xampp\htdocs\myproject\wp-content\themes\mk\post_type_creator.php on line 168
PHP Notice:  Trying to get property of non-object in C:\xampp\htdocs\mypj\wp-includes\nav-menu-template.php on line 180

2. Warnings
warning ေတြကေတာ႔ notice ထက္ေတာ႔ ပိုအေရးၾကီးပါတယ္။ ဒီerror ေၾကာင့္ process ကို ထိခုိက္မႈ ရွိႏိုင္ပါတယ္။ဒါေပမယ့္ code execution ကေတာ႔ မရပ္ပါဘူး။
eg:
PHP Warning:  asort() expects parameter 1 to be array, null given in C:\xampp\htdocs\mawkun\wp-content\plugins\payment_gateway.php on line 76
PHP Warning:  include(C:\xampp\htdocs\mawkun/wp-content/themes/index.php): failed to open stream: Invalid argument in C:\xampp\htdocs\prj\wp-includes\template-loader.php on line 89

3. Fatal Errors
Fatal error ျဖစ္ျပီဆိုရင္ code execution ရပ္သြားမွာျဖစ္ပါတယ္။ဒါဆိုရင္ေတာ႔ ဒီerror ကေနဘယ္လိုမွေက်ာ္သြားလုိ႔မရႏိုင္ဘူး။
eg:
PHP Fatal error:  Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\prj\wp-includes\class-wp-http-curl.php on line 309
PHP Fatal error:  Cannot redeclare gateway_action_links() (previously declared in C:\xampp\htdocs\Payment.php:33) in C:\xampp\htdocs\VisaMaster_Payment.php on line 40
PHP Fatal error:  Call to undefined function isCreditCard_ServerReturn() in C:\xampp\htdocs\checkout-thankyou.php on line 26

ဒါေလာက္နဲ႔ မျပီးေသးပါဘူး။php မွာ error ကို ဒီထက္အေသးစိတ္သတ္မွတ္ခ်က္ေတြရွိပါေသးတယ္။
ေအာက္က capital letter နဲ႔ ေရးထားတာေတြကေတာ႔ php error no: ေတြကို constant ေတြအေနနဲ႔ သတ္မွတ္ေပးထားတာျဖစ္ပါတယ္။

E_ERROR: (value:1)A fatal error that causes script termination

E_WARNING: (value:2)Run-time warning that does not cause script termination

E_PARSE: (value:4)Compile time parse error.
complile လုပ္တဲ႔အခ်ိန္မွာျဖစ္ေပၚလာတဲ႔ error အမ်ိဳးအစားပါ။ parser ကေနထုတ္ေပးတာပါ။

E_NOTICE: (value:8)Run time notice caused due to error in code

E_CORE_ERROR: (value:16)Fatal errors that occur during PHP's initial startup (installation)
PHP စ run တဲ႔အခ်ိန္မွာ ျဖစ္ေပၚလာတဲ႔ fatal error မ်ိဳးပါ။ core php ကထုတ္ေပးတာပါ။

E_CORE_WARNING: (value:32)Warnings that occur during PHP's initial startup

E_COMPILE_ERROR: (value:64) Fatal compile-time errors indication problem with script.
compile လုပ္တဲ႔အခ်ိန္မွာ ျဖစ္ေပၚတဲ႔ error ျဖစ္ပါတယ္။ zend scripting engine ကထုတ္ေပးတာပါ။
Zend ကုမၸဏီဟာ php အတြက္ အမ်ားၾကီးပါ၀င္ကူညီေရးသားေပးခဲ႔ပါတယ္။ Zend engine ကိုလည္း php အတြက္ ထုတ္လုပ္ေပးခဲ႔တာပါ။

E_COMPILE_WARNING: (value: 128)

E_USER_ERROR: (value:256) User-generated error message.
ဒါကေတာ႔ developer ေတြက ကိုယ္တိုင္ မိမိ code အတြက္ ERROR ေတြ ထုတ္လုပ္ခ်င္တဲ႔အခါ ဒီအမ်ိဳးအစားကိုသံုးခြင့္ရွိပါတယ္။ trigger_error() function ကို အသံုးျပဳေပးရမွာျဖစ္ပါတယ္။

E_USER_WARNING: (value:512) User-generated warning message.
ကိုယ္တိုင္ မိမိ code အတြက္ warnings ေတြ ထုတ္လုပ္ခ်င္တဲ႔အခါ ဒီအမ်ိဳးအစားကိုသံုးခြင့္ရွိပါတယ္။ trigger_error() function ကို အသံုးျပဳေပးရမွာျဖစ္ပါတယ္။

E_USER_NOTICE: (value:1024) User-generated notice message.
ကိုယ္တိုင္ မိမိ code အတြက္ notices ေတြ ထုတ္လုပ္ခ်င္တဲ႔အခါ ဒီအမ်ိဳးအစားကိုသံုးခြင့္ရွိပါတယ္။ trigger_error() function ကို အသံုးျပဳေပးရမွာျဖစ္ပါတယ္။

E_STRICT: (value:20148) Enable to have PHP suggest changes to your code which will ensure the best interoperability and forward compatibility of your code.
E_STRICT error ေတြကေတာ႔ ပံုမွန္ဆိုျမင္ရမွာမဟုတ္ပါဘူး။ဒါေပမယ့္ php.ini မွာ error_reporting  setting မွာ ျပင္လုိက္မွ ဒီလို error မ်ိဳးကျပမွာပါ။
eg: Strict Standards: Non-static method Strict::test() should not be called statically in C:\xampp\htdocs\testing.php on line 88

E_RECOVERABLE_ERROR: (value: 4096) Catchable fatal error indicating a dangerous error

E_DEPRECATED: (value:8192) Run-time notices. Enable this to receive warnings about code that will not work in future versions.
မိမိ function ကို ဆက္မသံုးေစခ်င္ပဲ အျခား ပိုအဆင္ေျပမယ့္ function ကို သံုးေစခ်င္တဲ႔အခါမွာ အခု လို error ကိုထုတ္ေပးႏိုင္တယ္။

E_USER_DEPRECATED: (value: 16384)
developer ကိုယ္တိုင္ အ၇င္ version က function ကို ယူသံုးတဲ႔အခါ undefined function လို error မ်ိဳးမျပခ်င္ပဲ ဒီ function က deprecated ျဖစ္သြားပါျပီ။ တျခား function ကို သံုးပါ စသျဖင့္ ျပေပးႏိုင္ပါတယ္။

E_ALL: (value: 32767)Catches all errors and warnings
error အားလံုး warning အားလံုး ပါ၀င္ပါတယ္။

အထက္ကေဖာ္ျပခဲ႔တဲ႔ error constant ေတြကို မိမိ application မွာ ဘယ္လို error မ်ိဳကို ပဲျပခ်င္တယ္။ အဲလို ျဖစ္လာခဲ႔ရင္ error_reporting(E_ALL) function ကို သံုးျပီး သတ္မွတ္ေပးလို႔႔ပါတယ္။

တကယ္လို႔ ကိုယ္႔ application ကို online တင္ျပီး user ေတြကို ေပးသံုးေနျပီဆုိရင္ေတာ႔ error ေတြဟာ မေဖာ္ျပသင့္ေတာ႔ပါဘူး။ ဒါေၾကာင့္ error အားလံုးကို ပိတ္ပစ္၇ပါတယ္။
error_reporting(0) လို႔ ထိပ္ဆံုးကေနေရးေပးထားရင္ ရပါျပီ။
ဒါမွမဟုတ္ php.ini မွာလည္း error_reporting ကို သြားျပင္လိုက္လို႔ရပါတယ္။
တစ္ခုမွတ္ထားရမွာက အဲလို error အားလံုးကို ပိတ္ထားလိုက္ရင္ web page မွာ error မေပၚသလို php error log file မွာလည္း ဘာမွသြားေရးမွာမဟုတ္ပါဘူး။

တကယ္လို error ကို မေပၚေစခ်င္ေပးမယ့္ ေနာက္ျပန္ၾကည့္လို႔ရေအာင္ error log ထဲမွာမွတ္ထားေစခ်င္တယ္ဆိုရင္ေတာ႔
ini_set('display_errors', 0); ကို သံုးလို႔ရပါတယ္။
ဒါမွမဟုတ္ php.ini file မွာ display_errors setting ကို off ေပးထားလိုက္ပါ။


Previous
Next Post »

Thorium School

Thorium School
Be professional with us