PHP中的错误信息

PHP中的错误信息

php.ini中配置错误消息
在PHP4中,没有异常 Exception这个概念,只有 错误Error。我们可以通过修改php.ini 文件来配置用户端输出的错误信息。
在php.ini 中,一个分号 ; 表示注释。
Php.ini 将能够显示的错误类型分为如下种类。
; E_ALL -所有的错误和警告,(不包含E_STRICT).
; E_ERROR -致命的运行时错误
; E_RECOVERABLE_ERROR -可由异常处理机制所捕捉 (catch/handle) 的错误
; E_WARNING - 运行时的警告(非致命错误)
; E_PARSE -编译时解析错误
; E_NOTICE - 运行时的提示,这些提示常常是代码中的bug引起的,也许是故意的(如使用一个未初始化的变量,事实上它被自动初始化成一个空字符串) 。
; E_STRICT - 运行时提示,能够给于PHP建议,以改变你的代码,以获得最好的协同性,并完善代码的兼容性。
; E_CORE_ERROR - PHP 初始化启动过程中的致命错误。
; E_CORE_WARNING - PHP 初始化启动过程中的非致命错误。
; E_COMPILE_ERROR - 致命的编译错误。
; E_COMPILE_WARNING – 编译错误(非致命的错误)。
; E_USER_ERROR - 用户错误信息。
; E_USER_WARNING - 用户警告信息。
; E_USER_NOTICE -用户提示信息。

在php.ini 中error_reporting 控制输出到用户端的消息种类。
以下几种是php.ini 中推荐的几种配置。
error_reporting = E_ALL  表示输出所有的信息。
error_reporting = E_ALL & ~E_NOTICE 表示输出所有的错误,除了提示。
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR  表示输出所有的 ERROR 信息。
在php.ini 中,display_errors可以设置是否将以上设置的错误信息输出到用户端。
display_errors = On 输出到用户端(调试代码时候,打开这项更方便)

display_errors = OFF 消息将不会输出到用户端(最终发布给用户时记得改成off)
php中错误消息处理
在php中,对于错误处理非常的宽松。php系统会尽量让程序运行下去,除非遇到致命错误。
例5-2-1.php
代码片段
例:5-2-1.php
< br/><br/><br/>
< ?php
echo "start......<br/>" ;
echo $t; echo "run......<br/>" ;
echo $b = 100/0; echo "run......<br/>" ;
$a = new A(); echo "end........<br/>";
?>
执行结果
例:5-2-1.php
start......
run...... Warning: Division by zero in 5-2-1.php on line 6
run...... Fatal error: Class ‘A‘ not found in 5-2-1.php on line 8
第5行,直接打印一个未赋值变量$t时候,系统报出一个 Notice,未定义变量。
第7行,做除以0的运算时,系统报出一个Warning,提示有除以0这样的警告,程序依然在运行。
第9行,当实例化一个不存在的类的时候,发生致命错误,程序终止运行。
再次提示:如果不想显示错误信息给用户看到,设置php.ini中
display_errors = OFF
php代码中调整错误级别
除了在php.ini文件中可以调整错误消息的显示级别外,在php代码中也可以自定义消息显示的级别。

PHP提供了一个方便的调整函数。
int error_reporting ( [int level] )
使用这个函数可以定义当前php页面中错误消息的显示级别。参数level使用了二进制掩码组合的方式。
1  E_ERROR
2  E_WARNING
4  E_PARSE
8  E_NOTICE
16  E_CORE_ERROR
32  E_CORE_WARNING
64  E_COMPILE_ERROR
128  E_COMPILE_WARNING
256  E_USER_ERROR
512  E_USER_WARNING
1024  E_USER_NOTICE
2047  E_ALL
2048  E_STRICT
4096  E_RECOVERABLE_ERROR
例5-2-2.php
代码片段
例:5-2-2.php<br/><br/><br/>
< ?php
error_reporting(0);
//关闭所有错误显示
//error_reporting(E_ERROR | E_WARNING | E_PARSE);
//error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
//error_reporting(E_ALL ^ E_NOTICE); //php.ini错误值。
//error_reporting(E_ALL); //显示所有错误信息。
//ini_set(‘error_reporting‘, E_ALL);
//error_reporting(E_ALL)同样效果的代码。
echo "start......<br/>" ;
echo $t; echo "run......<br/>" ;
echo $b = 100/0; echo "run......<br/>" ;
$a = new A();
echo "end........<br/>"; ?>
执行结果
例:5-2-2.php
start......
run......
run......
自定义错误处理
在php中,可以自定义对错误处理的方式。首先要自定义一个错误处理函数,然后使用 set_error_handler()函数向系统声明错误处理函数。代码中产生的错误就会使用这个错误处理函数了。
使用trigger_error()函数,可以触发一个error。例如trigger_error("age you input must >= 0", E_USER_ERROR),触发自己的错误信息。
例:5-2-3.php
代码片段
例:5-2-3.php
< br/><br/><br/>
< ?php
function myErrorHandler($errno, $errstr, $errfile, $errline) {
switch ($errno) {
case E_USER_ERROR:
echo "<b>My ERROR</b> [$errno] $errstr<br />\n";
echo " Fatal error in line $errline of file $errfile";
echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
echo "Aborting...<br />\n";
exit(1);
break;
case E_USER_WARNING:
echo "<b>My WARNING</b> [$errno] $errstr<br />\n";
break;
case E_USER_NOTICE:
echo "<b>My NOTICE</b> [$errno] $errstr<br />\n";
break;
default: echo "Unknown error type: [$errno] $errstr<br />\n";
break;
}
}
set_error_handler("myErrorHandler"); //定义错误处理函数. $age = -100;
//假设出现了负数的年龄,这明显是错误的。
if ($age < 0) {
trigger_error("age you input must >= 0", E_USER_ERROR);
//触发错误; }
?>
执行结果
例:5-2-3.php
My ERROR [256] age you input must >= 0 Fatal error in line 27 of file D5-2-3.php, PHP 5.1.1 (WINNT) Aborting...

时间: 2024-10-10 06:28:54

PHP中的错误信息的相关文章

PHP编译过程中常见错误信息的解决方法

PHP编译过程中常见错误信息的解决方 checking for BZip2 support- yes checking for BZip2 in default path- not found configure: error: Please reinstall the BZip2 distribution Fix: yum install bzip2-devel checking for cURL support- yes checking if we should use cURL for

LAMP系列之PHP编译过程中常见错误信息的解决方法

LAMP系列之PHP编译过程中常见错误信息的解决方法 在CentOS编译PHP5的时候有时会遇到以下的一些错误信息,基本上都可以通过yum安装相应的库来解决.以下是具体的一些解决办法: ******************************************************************************* checking for BZip2 support- yes checking  for BZip2 in default path- not foun

探讨在项目中如何处理错误信息

一个项目中肯定需要处理各种各样的错误.而对于这些错误,一方面需要程序反应出这些错误并可以让程序员快速地 定位到,另一方面,在发生某些错误时需要给用户适当的错误提示.比如某个请求的方法是 public User getUserInfo(String userId) 此时请求参数userId为null,我在项目中会这么做 public User getUserInfo(String userId){ Assert.notNull(userId, "userId不能为空"); // .. }

PHP中对于错误信息的提示配置?

在你PHP的最上方写上 error_reporting(E_ALL); 就会显示错误信息了 1.Notice: Undefined variable: 变量名in注:使用了一个没有被定义的变量2.Parse error: syntax error, unexpected T_ELSE in If () {}Else if () {}Echo $test;Else {}注:是if else if else 句式错误3.Parse error: syntax error, unexpected $e

[转]Jquery中AJAX错误信息调试参考

下面是Jquery中AJAX参数详细列表: 参数名 类型 描述 url String (默认: 当前页地址) 发送请求的地址. type String (默认: "GET") 请求方式 ("POST" 或 "GET"), 默认为 "GET".注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分浏览器支持. timeout Number 设置请求超时时间(毫秒).此设置将覆盖全局设置. async

在ASP.NET 5中显示错误信息

在 ASP.NET 5 中如果不进行显示错误信息的相关配置,在发生错误时,在浏览器中只能看到空白页面. 显示错误信息的配置方法如下: 1)在 project.json 中添加对 Microsoft.AspNet.Diagnostics 的引用 { "dependencies":{ "Microsoft.AspNet.Diagnostics": "1.0.0-*" } } 2)在 Startup.cs 中添加 app.UseErrorPage()

SpringMVC+HibernateValidator,配置在properties文件中的错误信息回显前端页面出现中文乱码

问题: 后台在springMVC中使用hibernate-validator做参数校验的时候(validator具体使用方法见GOOGLE),用properties文件配置了校验失败的错误信息.发现回显给前端页面的时候中文错误信息显示乱码. 封装参数的POJO类 public class UserReqBean { @NotNull(message="{user.name.notnull}") private String userName; } ValErrMsg.propertie

xubuntu-14.04 系统在启动过程中的错误信息

看样子好像是无线网卡方面的问题,暂不影响使用,无线网卡在启动后也能正常使用. 硬件信息如下: 07:00.0 Ethernet controller: Qualcomm Atheros QCA8171 Gigabit Ethernet (rev 10) 08:00.0 Network controller: Broadcom Corporation BCM43142 802.11b/g/n (rev 01) 系统内核版本: $ uname -a Linux myhost 3.13.0-44-ge

Powershell技巧1 抓取执行过程中的错误信息