详解PHP error_reporting

   经常在php.ini里看到php输出的错误级别没有深究,今天终于细致的查看了一下,分享出来。在自己开发项目时经常要查看错误信息,这就需要打开错误提示,在php.ini里打开设置display_errors = On,但项目一旦上线在线上环境中就不要这样做了,防止黑客拿到服务器的错误提示了解项目细节。

    当然除了在php.ini里设置外还可以在项目文件里设置php错误提示的级别。

ini_set('display_error', 'On');
error_reporting(E_ALL ^ E_NOTICE);

ini_set()函数临时修改php.ini的设置,error_reporting设置php显示错误的级别。error_reporting里参数的内容我们需要深究一下。E_ALL、E_ERROR、E_NOTICE是php预定义的常量,大家可以打印出来看看数值,当然这些十进制的数值要转成二进制才能看到其中的奥秘。

预定义常量 十进制 二进制
E_ALL 30719 111011111111111
E_ERROR 1 1
E_WARNING 2 10
E_NOTICE 8 100
E_CORE_ERROR 16 1000

大家也可以打印出来查看一下:

print_r(get_defined_constants());

转成二进制就可以进行位操作了,'&'按位与,'|'按位或,'~'取反,'^'异或,这样就可以解释:

error_reporting(E_ALL ^ E_NOTICE);
error_reporting(E_ALL & ~E_NOTICE);

上面两句都表示:除了运行时的通知不显示之外所有的提示都打印出来。

你可能感兴趣的:(PHP,详解,error_reporting)