PHP-error_reporting


调试PHP的错误,一般情况下网站对外会屏蔽错误,不方便调试。这种情况,可以做如下追加。

<?php
if($_SERVER['QUERY_STRING']==="__DEBUG_MODE__"){
	// 报告所有 PHP 错误	
    error_reporting(E_ALL);
	if (!ini_get('display_errors')) {
		ini_set('display_errors', '1');
	}
}

//设置输出报告形式  这里排除输出E_NOTICE
error_reporting(E_ALL & ~E_NOTICE);
//或者使用  
error_reporting(E_ALL ^ E_NOTICE);

//也可以设置配置文件;临时修改配置文件的设置  
ini_set("error_reporting", E_ALL); 
 
//获取配置文件的值  
ini_get("error_reporting");  

//屏蔽错误信息  
ini_set("display_error", "off");  
//写入错误日志信息  

error_log("this is a test error message!");  

?>


在用php做网站开发的时候 , 为防止用户看到错误信息,而出现的不友好界面。故一般性会在php.ini里设置:
display_errors = Off;
不过在开发的时候,我们有时候需要打开错误信息。这时候,可以在php文件里设置:

  ini_set("display_errors","On");
  error_reporting(E_ALL);

不过有时候我们及时这样设置了  还是无法显示php里的语法错误。这是由于php文件的语法错误导致该文件根本没有被执行,所以当然不会显示错误信息
解决方法是:假设这个php里有语法错误,你可以新建一个test.php,保证主文件可以编译通过。然后在该php里如下编辑:
ini_set("display_errors","On");
error_reporting(E_ALL);
include("目标文件");

这样,当你在运行test.php的时候  程序就会报其中的错误语法.

error_reporting(“E_ALL”)和ini_set(“display_errors”,“on”)的区别?

后者的权限大于前者,后者是OFF的话,前者就算是E-ALL也没用。



你可能感兴趣的:(error,display_errors)