特别表达:文章的PHP版本选择5.5.32

30719 E_ALL

E_ST景逸SUVICT出外的享有错误和警示信

E_RECOVERABLE_ERROR

那个品级其实是E昂科拉ROKuga级其他,可是它是愿意被擒获的,若无被错误管理捕获,表现和E_ECRUISERROWrangler是形似的。

日常出今后形参定义了品种,但调用的时候传出了错误类型。它的失实提示也比E_ELX570ROXC60的fatal
error前面多了一个Catachable的字样。

//Catchable fatal error: Argument 1 passed to testCall() must be an instance of A, instance of B given, called in /tmp/php/index.php on line 37 and defined in /tmp/php/index.php on line 33
class A {
}

class B {
}

function testCall(A $a) {
}

$b = new B();
testCall($b);

1 E_ERROR

沉重的周转时不当。那类错误常常是不可苏醒的情景,比方内存分配引致的标题。
变成脚本终止不再继续运转
事例:调用一个未定义的函数,存在还没捕获的极度

E_ERROR

这种张冠李戴是沉重错误,会在页面显示Fatal Error,
当现身这种错误的时候,程序就不能够继续试行下去了

谬误示例:

// Fatal error: Call to undefined function hpinfo() in /tmp/php/index.php on line 5
hpinfo();  //E_ERROR

瞩目,如若有未被抓获的可怜,也是会接触这几个级其余。

// Fatal error: Uncaught exception 'Exception' with message 'test exception' in /tmp/php/index.php:5 Stack trace: #0 {main} thrown in /tmp/php/index.php on line 5
throw new \Exception("test exception");

4 E_PARSE

编写翻译时语法剖析错误。
拆解分析错误仅仅由深入分析器发生。
register_shutdown_function不能够捕获到本文件内发出的这一个错误

E_COMPILE_ERROR, E_COMPILE_WARNING

那四个错误是由PHP引擎发生的,在编写翻译进程中发出。

2048 E_STRICT

启用 PHP 对代码的矫正提出,以确定保证代码具有最棒的互操作性和前行包容性。

E_DEPRECATED

以此张冠李戴表示您用了三个旧版本的函数,而以此函数中期版本恐怕被剥夺可能不保险了。

比如curl的CURLOPT_POSTFIELDS使用\@FILENAME来上传文件的措施

// Deprecated: curl_setopt(): The usage of the @filename API for file uploading is deprecated. Please use the CURLFile class instead in /tmp/php/index.php on line 42
$ch = curl_init("http://www.remotesite.com/upload.php");
curl_setopt($ch, CURLOPT_POSTFIELDS, array('fileupload' => '@'. "test"));

32 E_CORE_WARNING

PHP初步化运转进程中产生的告诫
类似 E_WALX570NING,不过是由PHP引擎主题发生的

E_WARNING

这种不当只是警示,不会停止脚本,程序还有或然会接二连三开展,显示的错误新闻是Warning。比方include多少个子虚乌有的文本。

//Warning: include(a.php): failed to open stream: No such file or directory in /tmp/php/index.php on line 7
//Warning: include(): Failed opening 'a.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /tmp/php/index.php on line 7
include("a.php"); //E_WARNING

error_get_last

赢得最后产生的不当,register_shutdown_function(卡塔尔平常使用

array error_get_last 

重返结果

Array(    [type] => 8    [message] => Undefined variable: a    [file] => C:\WWW\index.php    [line] => 2)

E_PARSE

这么些荒谬是编写翻译时候产生的,在编写翻译期开采语法错误,不可能开展语法深入分析。

举个例子上面的z未有安装为变量。

// Parse error: syntax error, unexpected '=' in /tmp/php/index.php on line 20
z=1; // E_PARSE

E_USER_

顾客产生的
256 E_USER_ERROR
客户发生的错误消息。相像 E_E路虎极光RO帕杰罗, 可是是由顾客本人在代码中使用PHP函数
trigger_error(卡塔尔国来发生的。 since PHP 4
512 E_USER_WARNING
客户发生的警戒音讯。雷同 E_WA宝马X5NING, 不过是由客商本身在代码中使用PHP函数
trigger_error(卡塔尔(قطر‎来产生的。 since PHP 4
1024 E_USER_NOTICE
客商产生的通报消息。相仿 E_NOTICE, 不过是由顾客本身在代码中使用PHP函数
trigger_error(卡塔尔来发出的

php-fpm中的配置

error_log = /var/log/php-fpm/error.log // php-fpm自身的日志
log_level = notice // php-fpm自身的日志记录级别
php_flag[display_errors] = off // 覆盖php.ini中的某个配置变量,可被程序中的ini_set覆盖
php_value[display_errors] = off // 同php_flag
php_admin_value[error_log] = /tmp/www-error.log // 覆盖php.ini中的某个配置变量,不可被程序中的ini_set覆盖
php_admin_flag[log_errors] = on // 同php_admin_value
catch_workers_output = yes // 是否抓取fpmworker的输出
request_slowlog_timeout = 0 // 慢日志时长
slowlog = /var/log/php-fpm/www-slow.log // 慢日志记录

php-fpm的陈设中也可以有贰个error_log配置,那一个很平时会和php.ini中的error_log配置弄混。但他们记录的东西是分化等的,php-fpm的error_log只记录php-fpm自己的日志,比如fpm运行,关闭。

而php.ini中的error_log是记录php程序自身的失实日志。

那么在php-fpm中要隐瞒php.ini中的error_log配置,就供给运用到上边多少个函数:

  • php_flag
  • php_value
  • php_admin_flag
  • php_admin_value

那四个函数admin的三个函数表达那几个变量设置完之后,不可能在代码中动用ini_set把那个变量重新赋值了。而php_flag/value就依然以php代码中的ini_set为准。

slowlog是fpm记录的,能够动用request_slowlog_timeout设置决断慢日志的时间长度。

E_COMPILE_

编写翻译相关
64 E_COMPILE_ERROR
致命编写翻译时不当。雷同E_ELANDROTiggo, 不过是由Zend脚本引擎发生的。 since PHP 4
128 E_COMPILE_WARNING
编写翻译时警报 。肖似 E_WA瑞虎NING,可是是由Zend脚本引擎发生的。

E_STRICT

以此错误是PHP5之后引进的,你的代码能够运营,不过否PHP提议的写法。

比如在函数形参传递++符号

// Strict Standards: Only variables should be passed by reference in /tmp/php/index.php on line 17
function change (&$var) {
  $var += 10;
}

$var = 1;
change(++$var);
// E_STRICT

2 E_WARNING

运转时告诫
仅付给提醒消息,不过脚本不会结束运转。

PHP的大谬不然机制也是非常复杂的,做了几年php,也并未有细心总结过,以后就补上那大器晚成课。

8 E_NOTICE

运营时通报。表示脚本蒙受可能交易会现为错误的情形,不过在可以健康运作的本子里面也或者会有接近的布告
事例:使用未定义的变量

E_NOTICE

这种不当程度更加的稍稍一些,提醒您那些地点不应犹如此写。那么些也是运作时不当,那个错误的代码或许在其他地点还正常,只是在现阶段上下文情形下冒出了难题。

诸如$b变量不设有,大家把它赋值给其它多个变量

//Notice: Undefined variable: b in /tmp/php/index.php on line 9
$a = $b; //E_NOTICE

set_exception_handler

安装多个客商定义的不得了管理函数

<?phpfunction exception_handler($exception) {  echo "Uncaught exception: " , $exception->getMessage(), "\n";}set_exception_handler('exception_handler');throw new Exception('Uncaught Exception');echo "Not Executed\n";?>

E_ALL

E_ST大切诺基ICT出外的有着错误和警示新闻。

4096 E_RECOVERABLE_ERROR

可被捕捉的沉重错误。
它代表发生了八个只怕特别危殆的错误,可是还平昔不以致PHP引擎处于不安宁的情景。
若是该错误未有被客商自定义句柄捕获 ( set_error_handler,将改为三个E_E景逸SUVRO锐界 进而脚本会终止运转。

admin

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注