PHP ´íÎó´¦Àí
ÔÚ PHP ÖУ¬Ä¬ÈϵĴíÎó´¦ÀíºÜ¼òµ¥¡£Ò»ÌõÏûÏ¢»á±»·¢Ë͵½ä¯ÀÀÆ÷£¬ÕâÌõÏûÏ¢´øÓÐÎļþÃû¡¢ÐкÅÒÔ¼°Ò»ÌõÃèÊö´íÎóµÄÏûÏ¢¡£
PHP ´íÎó´¦Àí
ÔÚ´´½¨½Å±¾ºÍ web Ó¦ÓóÌÐòʱ£¬´íÎó´¦ÀíÊÇÒ»¸öÖØÒªµÄ²¿·Ö¡£Èç¹ûÄúµÄ´úÂëȱÉÙ´íÎó¼ì²â±àÂ룬ÄÇô³ÌÐò¿´ÉÏÈ¥ºÜ²»×¨Òµ£¬Ò²Îª°²È«·çÏÕ³¨¿ªÁË´óÃÅ¡£
±¾½Ì³Ì½éÉÜÁË PHP ÖÐһЩ×îÎªÖØÒªµÄ´íÎó¼ì²â·½·¨¡£
ÎÒÃǽ«ÎªÄú½²½â²»Í¬µÄ´íÎó´¦Àí·½·¨£º
- ¼òµ¥µÄ "die()" Óï¾ä
- ×Ô¶¨Òå´íÎóºÍ´íÎó´¥·¢Æ÷
- ´íÎ󱨸æ
»ù±¾µÄ´íÎó´¦Àí£ºÊ¹Óà die() º¯Êý
µÚÒ»¸öÀý×ÓչʾÁËÒ»¸ö´ò¿ªÎı¾ÎļþµÄ¼òµ¥½Å±¾£º
<?php $file=fopen("welcome.txt","r"); ?>
Èç¹ûÎļþ²»´æÔÚ£¬Äú»á»ñµÃÀàËÆÕâÑùµÄ´íÎó£º
Warning: fopen(welcome.txt) [function.fopen]: failed to open stream: No such file or directory in C:\webfolder\test.php on line 2
ΪÁ˱ÜÃâÓû§»ñµÃÀàËÆÉÏÃæµÄ´íÎóÏûÏ¢£¬ÎÒÃÇÔÚ·ÃÎÊÎļþ֮ǰ¼ì²â¸ÃÎļþÊÇ·ñ´æÔÚ£º
<?php if(!file_exists("welcome.txt")) { die("File not found"); } else { $file=fopen("welcome.txt","r"); } ?>
ÏÖÔÚ£¬¼ÙÈçÎļþ²»´æÔÚ£¬Äú»áµÃµ½ÀàËÆÕâÑùµÄ´íÎóÏûÏ¢£º
File not found
±ÈÆð֮ǰµÄ´úÂ룬ÉÏÃæµÄ´úÂë¸üÓÐЧ£¬ÕâÊÇÓÉÓÚËü²ÉÓÃÁËÒ»¸ö¼òµ¥µÄ´íÎó´¦Àí»úÖÆÔÚ´íÎóÖ®ºóÖÕÖ¹Á˽ű¾¡£
²»¹ý£¬¼òµ¥µØÖÕÖ¹½Å±¾²¢²»×ÜÊÇÇ¡µ±µÄ·½Ê½¡£ÈÃÎÒÃÇÑо¿Ò»ÏÂÓÃÓÚ´¦Àí´íÎóµÄ±¸Ñ¡µÄ PHP º¯Êý¡£
´´½¨×Ô¶¨Òå´íÎó´¦ÀíÆ÷
´´½¨Ò»¸ö×Ô¶¨ÒåµÄ´íÎó´¦ÀíÆ÷·Ç³£¼òµ¥¡£ÎÒÃǺܼòµ¥µØ´´½¨ÁËÒ»¸öרÓú¯Êý£¬¿ÉÒÔÔÚ PHP Öз¢Éú´íÎóʱµ÷Óøú¯Êý¡£
¸Ãº¯Êý±ØÐëÓÐÄÜÁ¦´¦ÀíÖÁÉÙÁ½¸ö²ÎÊý (error level ºÍ error message)£¬µ«ÊÇ¿ÉÒÔ½ÓÊÜ×î¶àÎå¸ö²ÎÊý£¨¿ÉÑ¡µÄ£ºfile, line-number ÒÔ¼° error context£©£º
Óï·¨
error_function(error_level,error_message, error_file,error_line,error_context)
²ÎÊý | ÃèÊö |
---|---|
error_level | ±ØÐ衣ΪÓû§¶¨ÒåµÄ´íÎ󹿶¨´íÎ󱨸漶±ð¡£±ØÐëÊÇÒ»¸öÖµÊý¡£ ²Î¼ûÏÂÃæµÄ±í¸ñ£º´íÎ󱨸漶±ð¡£ |
error_message | ±ØÐ衣ΪÓû§¶¨ÒåµÄ´íÎ󹿶¨´íÎóÏûÏ¢¡£ |
error_file | ¿ÉÑ¡¡£¹æ¶¨´íÎóÔÚÆäÖз¢ÉúµÄÎļþÃû¡£ |
error_line | ¿ÉÑ¡¡£¹æ¶¨´íÎó·¢ÉúµÄÐкš£ |
error_context | ¿ÉÑ¡¡£¹æ¶¨Ò»¸öÊý×飬°üº¬Á˵±´íÎó·¢ÉúʱÔÚÓõÄÿ¸ö±äÁ¿ÒÔ¼°ËüÃǵÄÖµ¡£ |
´íÎ󱨸漶±ð
ÕâЩ´íÎ󱨸漶±ðÊÇ´íÎó´¦Àí³ÌÐòÖ¼ÔÚ´¦ÀíµÄ´íÎóµÄ²»Í¬µÄÀàÐÍ£º
Öµ | ³£Á¿ | ÃèÊö |
---|---|---|
2 | E_WARNING | ·ÇÖÂÃüµÄ run-time ´íÎó¡£²»ÔÝÍ£½Å±¾Ö´ÐС£ |
8 | E_NOTICE | Run-time ֪ͨ¡£ ½Å±¾·¢ÏÖ¿ÉÄÜÓдíÎó·¢Éú£¬µ«Ò²¿ÉÄÜÔڽű¾Õý³£ÔËÐÐʱ·¢Éú¡£ |
256 | E_USER_ERROR | ÖÂÃüµÄÓû§Éú³ÉµÄ´íÎó¡£ÕâÀàËÆÓÚ³ÌÐòԱʹÓà PHP º¯Êý trigger_error() ÉèÖÃµÄ E_ERROR¡£ |
512 | E_USER_WARNING | ·ÇÖÂÃüµÄÓû§Éú³ÉµÄ¾¯¸æ¡£ÕâÀàËÆÓÚ³ÌÐòԱʹÓà PHP º¯Êý trigger_error() ÉèÖÃµÄ E_WARNING¡£ |
1024 | E_USER_NOTICE | Óû§Éú³ÉµÄ֪ͨ¡£ÕâÀàËÆÓÚ³ÌÐòԱʹÓà PHP º¯Êý trigger_error() ÉèÖÃµÄ E_NOTICE¡£ |
4096 | E_RECOVERABLE_ERROR | ¿É²¶»ñµÄÖÂÃü´íÎó¡£ÀàËÆ E_ERROR£¬µ«¿É±»Óû§¶¨ÒåµÄ´¦Àí³ÌÐò²¶»ñ¡£(²Î¼û set_error_handler()) |
8191 | E_ALL | ËùÓдíÎóºÍ¾¯¸æ£¬³ý¼¶±ð E_STRICT ÒÔÍâ¡£ £¨ÔÚ PHP 6.0£¬E_STRICT ÊÇ E_ALL µÄÒ»²¿·Ö£© |
ÏÖÔÚ£¬ÈÃÎÒÃÇ´´½¨Ò»¸ö´¦Àí´íÎóµÄº¯Êý£º
function customError($errno, $errstr) { echo "<b>Error:</b> [$errno] $errstr<br />"; echo "Ending Script"; die(); }
ÉÏÃæµÄ´úÂëÊÇÒ»¸ö¼òµ¥µÄ´íÎó´¦Àíº¯Êý¡£µ±Ëü±»´¥·¢Ê±£¬Ëü»áÈ¡µÃ´íÎó¼¶±ðºÍ´íÎóÏûÏ¢¡£È»ºóËü»áÊä³ö´íÎó¼¶±ðºÍÏûÏ¢£¬²¢ÖÕÖ¹½Å±¾¡£
ÏÖÔÚ£¬ÎÒÃÇÒѾ´´½¨ÁËÒ»¸ö´íÎó´¦Àíº¯Êý£¬ÎÒÃÇÐèҪȷ¶¨ÔÚºÎʱ´¥·¢¸Ãº¯Êý¡£
Set Error Handler
PHP µÄĬÈÏ´íÎó´¦Àí³ÌÐòÊÇÄÚ½¨µÄ´íÎó´¦Àí³ÌÐò¡£ÎÒÃÇ´òËã°ÑÉÏÃæµÄº¯Êý¸ÄÔìΪ½Å±¾ÔËÐÐÆÚ¼äµÄĬÈÏ´íÎó´¦Àí³ÌÐò¡£
¿ÉÒÔÐ޸ĴíÎó´¦Àí³ÌÐò£¬Ê¹Æä½öÓ¦Óõ½Ä³Ð©´íÎó£¬ÕâÑù½Å±¾¾Í¿ÉÒÔ²»Í¬µÄ·½Ê½À´´¦Àí²»Í¬µÄ´íÎó¡£²»¹ý£¬ÔÚ±¾ÀýÖУ¬ÎÒÃÇ´òËãÕë¶ÔËùÓдíÎóÀ´Ê¹ÓÃÎÒÃǵÄ×Ô¶¨Òå´íÎó´¦Àí³ÌÐò£º
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
´¥·¢´íÎó
Ôڽű¾ÖÐÓû§ÊäÈëÊý¾ÝµÄλÖ㬵±Óû§µÄÊäÈëÎÞЧʱ´¥·¢´íÎóµÄºÜÓÐÓõġ£ÔÚ 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:\webfolder\test.php on line 6
Äú¿ÉÒÔÔڽű¾ÖÐÈκÎλÖô¥·¢´íÎó£¬Í¨¹ýÌí¼ÓµÄµÚ¶þ¸ö²ÎÊý£¬ÄúÄܹ»¹æ¶¨Ëù´¥·¢µÄ´íÎó¼¶±ð¡£
¿ÉÄܵĴíÎóÀàÐÍ£º
- E_USER_ERROR - ÖÂÃüµÄÓû§Éú³ÉµÄ run-time ´íÎó¡£´íÎóÎÞ·¨»Ö¸´¡£½Å±¾Ö´Ðб»Öжϡ£
- E_USER_WARNING - ·ÇÖÂÃüµÄÓû§Éú³ÉµÄ run-time ¾¯¸æ¡£½Å±¾Ö´Ðв»±»Öжϡ£
- E_USER_NOTICE - ĬÈÏ¡£Óû§Éú³ÉµÄ run-time ֪ͨ¡£½Å±¾·¢ÏÖÁË¿ÉÄܵĴíÎó£¬Ò²ÓпÉÄÜÔڽű¾ÔËÐÐÕý³£Ê±·¢Éú¡£
Àý×Ó
ÔÚ±¾ÀýÖУ¬Èç¹û "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£¬ÒÔ¼°ÈçºÎ´¥·¢ËüÃÇ£¬ÏÖÔÚÎÒÃÇÑо¿Ò»Ï´íÎó¼Ç¼¡£
´íÎó¼Ç¼
ĬÈϵأ¬¸ù¾ÝÔÚ php.ini ÖÐµÄ error_log ÅäÖã¬PHP Ïò·þÎñÆ÷µÄ´íÎó¼Ç¼ϵͳ»òÎļþ·¢ËÍ´íÎó¼Ç¼¡£Í¨¹ýʹÓà error_log() º¯Êý£¬Äú¿ÉÒÔÏòÖ¸¶¨µÄÎļþ»òÔ¶³ÌÄ¿µÄµØ·¢ËÍ´íÎó¼Ç¼¡£
ͨ¹ýµç×ÓÓʼþÏòÄú×Ô¼º·¢ËÍ´íÎóÏûÏ¢£¬ÊÇÒ»ÖÖ»ñµÃÖ¸¶¨´íÎóµÄ֪ͨµÄºÃ°ì·¨¡£
ͨ¹ý E-Mail ·¢ËÍ´íÎóÏûÏ¢
ÔÚÏÂÃæµÄÀý×ÓÖУ¬Èç¹ûÌØ¶¨µÄ´íÎó·¢Éú£¬ÎÒÃǽ«·¢ËÍ´øÓдíÎóÏûÏ¢µÄµç×ÓÓʼþ£¬²¢½áÊø½Å±¾£º
<?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: webmaster@example.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
Õâ¸ö·½·¨²»ÊʺÏËùÓеĴíÎó¡£³£¹æ´íÎóÓ¦µ±Í¨¹ýʹÓÃĬÈ쵀 PHP ¼Ç¼ϵͳÔÚ·þÎñÆ÷ÉϽøÐмǼ¡£