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 ¼Ç¼ϵͳÔÚ·þÎñÆ÷ÉϽøÐмǼ¡£

VUE