文件路径问题:
1、相对路径:
就是以“./”, 或“../”,开头的路径。
./ 表示当前网页文件的所在位置(文件夹,目录);
../ 表示当前网页文件的所在位置的上一级位置(文件夹,目录)
本地绝对路径:
window系统: c:/d1/d2/page3.php
unix系列系统: /d1/d2/page3.php
网络绝对路径: http://www.abc.com/d1/d2/page4.php
错误的分级
在php中,将各种错误,分门别类,依据不同的严重程度和产生的来源(机制),将各种错误分为大约10几个级别。
每个级别的错误,都对应一个内部的名称——系统常量!
系统错误:
E_ERROR:系统严重错误
一发生,程序立即停止执行。
该错误一般希望马上。
E_WARNING:系统警告
一发生,提示错误,并继续执行。
通常该错误希望能够在“下一工作日”去处理掉(解决)。
E_PARSE:语法错误
一发生,提示错误,而且代码完全不会运行——在运行之前先检查语法。
E_NOTICE:系统提示
一发生,提示错误,并继续执行。
发个邮件通知一下,自己安排时间有空去解决。
用户自定义错误
只有3个:
E_USER_ERROR;
E_USER_WARNING;
E_USER_NOTICE;
我们可以在程序中,自己创建(生成)错误——是为了针对某些数据的不合理情形,而创建的错误。
比如:让用户填写年龄, 填18是ok,但填写188就是不合理——从数字角度本身是没有问题。
其他:
E_ALL; 代表所有错误——表示它可以“包括”错误。
E_STRICT: 代表“严格性”语法检查错误——某种语法是可以执行的,但在当前的php版本中是不欢迎使用。
错误的显示控制
网页中显示(提示)错误信息,是可以进行控制的,有2种途径:
1,在php.ini文件中设定,对所有php程序都有效;
2,在当前脚本文件中,只对当前脚步文件有效。
错误的显示有2个方面可以进行控制;
1,设定是否显示:display_error:
php.ini中;display_error = On; //表示显示, Off表示不显示;
脚本中: ini_set(“display_error”, 1); //1表示显示, 0表示不显示,也可以用true,false
脚本中的设定优先级高。
2,设定显示哪些级别的错误——依赖与第一项设定为显示的情况。
php.ini文件中:
error_reporting = E_NOTICE; //只显示E_NOTICE错误
error_reporting = E_NOTICE | E_WARNING; //显示E_NOTICE和E_WARNING错误
error_reporting = E_NOTICE | E_WARNING | E_USER_ERROR;
//显示E_NOTICE和E_WARNING和E_USER_ERROR错误
解释上一行::
E_NOTICE: 00000000 00001000
E_WARNING: 00000000 00000010
E_USER_ERROR: 00000001 00000000
或运算(|)
00000001 00001010
实际上,在开发阶段,常用的是:
error_reporting = E_ALL | E_STRICT;
它是这样的结果:
E_ALL 01110111 11111111
E_STRICT: 00001000 00000000
或运算(|)
01111111 11111111
可见,E_ALL并非真的表示“所有”,而是只有E_ALL | E_STRICT才真的表示所有。
继续:如果在显示“所有”错误的基础上,只想“关闭”个别少数错误呢?
跟状态数据的设定(关闭)道理一样,只要这么做:
error_reporting = E_ALL | E_STRICT & ~E_NOTICE; //只关闭了E_NOTICE错误提示
error_reporting = E_ALL | E_STRICT & ~E_NOTICE & ~E_WARNING;//关闭了2个
在代码中设定:
ini_set(“error_reporting”, E_NOTICE); //只显示E_NOTICE错误
ini_set(“error_reporting”, E_NOTICE | E_WARNING); 显示E_NOTICE和E_WARNING错误
ini_set(“error_reporting”, E_ALL | E_STRICT & ~E_NOTICE); //只关闭E_NOTICE错误
ini_set()含义可以设定几乎所有php.ini中的设定项,形式如下:
ini_set(“设定项名称” ,值); //这种设定都只对当前脚本有效,而且无需重启apache,很方便。
另一个对应函数是:ini_get(“设定项名称”);//用于获取某项的值。
记录错误日志
在开发阶段,我们通常都是显示所有错误——意图解决错误
在产品阶段,我们通常都是隐藏所有错误——并同时将错误信息记录到文件中——错误日志文件。
我们可以自己查看错误日志以解决开发阶段没有发现的错误问题。
记录错误日志同样有2种途径:
1,在Php.ini文件中设定:
log_errors = On; //用于设定是否记录错误日志,On记录,Off不记录
error_log = “错误日志文件名”; //设定错误日志的文件名
此时, 该文件没有给定路径,则系统会在每个文件夹下建立该文件并记录进去。
error_log还有一个特殊值可以使用:
error_log = syslog; //此时不会记录错误日志文件,而是把错误信息写入到系统错误日志中
自定义错误处理
以上的错误处理,不管是显示错误,还是记录错误日志,都是php语言内部实现的。
我们只是几个简单的设定是否显示或是否记录或显示哪些,或记录到哪里。
则:
自定义错误处理,就可以让我们自己完全控制错误的提示内容!
做法非常简单:
1,设定要用来进行自定义处理错误的自定义函数名;
2,自己去定义该函数,并在其中进行任何错误信息的输出(或记录)。
这两件事做好后,一旦发生错误,则系统就会调用该函数去执行里面的代码——想干嘛干嘛。
(注意:上述自定义处理错误的函数中,只作了“显示错误”的工作,而没有做“记录错误日志”的工作,这需要“操作文件”的知识。)
几点说明:
1,一定是用自定义错误处理程序,则系统不再处理错误。
2,但:如果一旦发生严重错误(E_ERROR, E_USER_ERROR),则立即停止程序,并也不去调用自定义错误处理——此时系统错误处理工作会照常进行——即对于严重错误,自定义错误处理函数处理不了
1、相对路径:
就是以“./”, 或“../”,开头的路径。
./ 表示当前网页文件的所在位置(文件夹,目录);
../ 表示当前网页文件的所在位置的上一级位置(文件夹,目录)
2、绝对路径:
有2种绝对路径:本地绝对路径:
window系统: c:/d1/d2/page3.php
unix系列系统: /d1/d2/page3.php
网络绝对路径: http://www.abc.com/d1/d2/page4.php
错误的分级
在php中,将各种错误,分门别类,依据不同的严重程度和产生的来源(机制),将各种错误分为大约10几个级别。
每个级别的错误,都对应一个内部的名称——系统常量!
系统错误:
E_ERROR:系统严重错误
一发生,程序立即停止执行。
该错误一般希望马上。
E_WARNING:系统警告
一发生,提示错误,并继续执行。
通常该错误希望能够在“下一工作日”去处理掉(解决)。
E_PARSE:语法错误
一发生,提示错误,而且代码完全不会运行——在运行之前先检查语法。
E_NOTICE:系统提示
一发生,提示错误,并继续执行。
发个邮件通知一下,自己安排时间有空去解决。
用户自定义错误
只有3个:
E_USER_ERROR;
E_USER_WARNING;
E_USER_NOTICE;
我们可以在程序中,自己创建(生成)错误——是为了针对某些数据的不合理情形,而创建的错误。
比如:让用户填写年龄, 填18是ok,但填写188就是不合理——从数字角度本身是没有问题。
其他:
E_ALL; 代表所有错误——表示它可以“包括”错误。
E_STRICT: 代表“严格性”语法检查错误——某种语法是可以执行的,但在当前的php版本中是不欢迎使用。
错误的显示控制
网页中显示(提示)错误信息,是可以进行控制的,有2种途径:
1,在php.ini文件中设定,对所有php程序都有效;
2,在当前脚本文件中,只对当前脚步文件有效。
错误的显示有2个方面可以进行控制;
1,设定是否显示:display_error:
php.ini中;display_error = On; //表示显示, Off表示不显示;
脚本中: ini_set(“display_error”, 1); //1表示显示, 0表示不显示,也可以用true,false
脚本中的设定优先级高。
2,设定显示哪些级别的错误——依赖与第一项设定为显示的情况。
php.ini文件中:
error_reporting = E_NOTICE; //只显示E_NOTICE错误
error_reporting = E_NOTICE | E_WARNING; //显示E_NOTICE和E_WARNING错误
error_reporting = E_NOTICE | E_WARNING | E_USER_ERROR;
//显示E_NOTICE和E_WARNING和E_USER_ERROR错误
解释上一行::
E_NOTICE: 00000000 00001000
E_WARNING: 00000000 00000010
E_USER_ERROR: 00000001 00000000
或运算(|)
00000001 00001010
实际上,在开发阶段,常用的是:
error_reporting = E_ALL | E_STRICT;
它是这样的结果:
E_ALL 01110111 11111111
E_STRICT: 00001000 00000000
或运算(|)
01111111 11111111
可见,E_ALL并非真的表示“所有”,而是只有E_ALL | E_STRICT才真的表示所有。
继续:如果在显示“所有”错误的基础上,只想“关闭”个别少数错误呢?
跟状态数据的设定(关闭)道理一样,只要这么做:
error_reporting = E_ALL | E_STRICT & ~E_NOTICE; //只关闭了E_NOTICE错误提示
error_reporting = E_ALL | E_STRICT & ~E_NOTICE & ~E_WARNING;//关闭了2个
在代码中设定:
ini_set(“error_reporting”, E_NOTICE); //只显示E_NOTICE错误
ini_set(“error_reporting”, E_NOTICE | E_WARNING); 显示E_NOTICE和E_WARNING错误
ini_set(“error_reporting”, E_ALL | E_STRICT & ~E_NOTICE); //只关闭E_NOTICE错误
ini_set()含义可以设定几乎所有php.ini中的设定项,形式如下:
ini_set(“设定项名称” ,值); //这种设定都只对当前脚本有效,而且无需重启apache,很方便。
另一个对应函数是:ini_get(“设定项名称”);//用于获取某项的值。
记录错误日志
在开发阶段,我们通常都是显示所有错误——意图解决错误
在产品阶段,我们通常都是隐藏所有错误——并同时将错误信息记录到文件中——错误日志文件。
我们可以自己查看错误日志以解决开发阶段没有发现的错误问题。
记录错误日志同样有2种途径:
1,在Php.ini文件中设定:
log_errors = On; //用于设定是否记录错误日志,On记录,Off不记录
error_log = “错误日志文件名”; //设定错误日志的文件名
此时, 该文件没有给定路径,则系统会在每个文件夹下建立该文件并记录进去。
error_log还有一个特殊值可以使用:
error_log = syslog; //此时不会记录错误日志文件,而是把错误信息写入到系统错误日志中
自定义错误处理
以上的错误处理,不管是显示错误,还是记录错误日志,都是php语言内部实现的。
我们只是几个简单的设定是否显示或是否记录或显示哪些,或记录到哪里。
则:
自定义错误处理,就可以让我们自己完全控制错误的提示内容!
做法非常简单:
1,设定要用来进行自定义处理错误的自定义函数名;
2,自己去定义该函数,并在其中进行任何错误信息的输出(或记录)。
这两件事做好后,一旦发生错误,则系统就会调用该函数去执行里面的代码——想干嘛干嘛。
(注意:上述自定义处理错误的函数中,只作了“显示错误”的工作,而没有做“记录错误日志”的工作,这需要“操作文件”的知识。)
几点说明:
1,一定是用自定义错误处理程序,则系统不再处理错误。
2,但:如果一旦发生严重错误(E_ERROR, E_USER_ERROR),则立即停止程序,并也不去调用自定义错误处理——此时系统错误处理工作会照常进行——即对于严重错误,自定义错误处理函数处理不了