00:00
好,那我们继续来上课,那么这节课呢,我们再来看一下我们如何去解决这个孤独终老,对吧?那么其实解决这个问题的关键点就在于两处,第一就是让不该看到的人看不到,对吧?谁是不该看到的是老板、用户跟黑客,第二呢,就是让该看到的人看到谁是该看到的?网站开发人员是不是只要能达到这一点,那么我们就实现了这个。问题的解决方式啊,对吧,那好了,那怎么样该看让不该看的人看不到呢?是不是可以使用,那第一种方式可以干嘛?使用错误抑制符,那也就是说在这里边,比如我有两个错误对吧,那这块我直接前面加上一个I的符,那么这个时候它是不是就不会报错了来刷新对吧?那同样买这I这个我也加了一个I的符,诶错了,加个I的符是不是也一样不会报错了,对吧?但是这种东西咱们说。我们再去写的时候尽量不要使用艾德符,对吧?我当时讲三个减这个运算符的时候,我也说过,我们尽量不要用这个艾符去屏蔽错误,为什么?因为它的效率极低,对不对?哎,所以我们不推荐使用这种方式,那还有其他的方式吗?也有很多种方法啊,那你再来看在这里面,那第二种方式干嘛?我们可以修改PP配置文件中的哪个选项呢?叫做display-errors。
01:05
它是干嘛的,它是来控制你错误的显示和不显示,一般我们在一个新的服务器下装好了PP环境以后,默认它都是设为on啊,默认都是设为off,都是什么关闭错误,那现在你来看啊,我现在的错误是开启的对不对?来比如说在这里面。找到p ii在这里边,我们去搜索索什么索这个E。啊,不对,是play啊,错了啊,叫做Dis。Play-EA错了。ER ors,好。这里再说来,你看是不是face play。Error为on,给它改为of干嘛呢?关闭所有的错误,那只要你动了配置文件,我是不是就得重启我的阿玛奇啊?对不对,诶包括我们后期在做项目,做完项目以后,你需要把你的项目导到服务器里边,对不对,那么服务器里边默认的环境就是为off的,所以所有的错他不会报,不会报,那你在这里面导入完以后,就会看到这样效果,是不是什么错误都没有,哎,所以第一个你要想要看到你这比如说项目导你不好使,你要想看不好使的原因,一定要把错误屏蔽先开起来是吧,先开起来才能看到这个东西,你看我现在一刷完,我给它设置为on以后啊。
02:18
设置为这个of以后,是不是什么错误都没有了,哎,什么错误都没有了,那这个东西是好用吗?好用倒是挺好用,但是呢,它不方便对吧,它属于一刀切,要么就全都不显示,要么就全都显示对不对,诶所以呢,大家记住啊,等到后期你的项目导到服务器里边,如果啊不好使,然后呢,还不报错,那你第一个就来找他,看他是不是关闭了啊,所以我给他先开起来啊,那啊还是那报错了,也就说第二种方式我们可以用它,对吧?但是咱说了这个东西呢,不好用啊,但是一刀切了,那么我能不能去指定让某种错误类型输出,或者让某种错误类型不输出呢?也可以啊,咱们来看刷新一下啊,现在是报错了,这里边有个knowledge,有个value,对不对,那一样,我在这里边再去设置找什么呢?找。
03:02
Error-reporting现在抛出了什么?是不是一杠所有的错误对吧?那报所有的错误,并且除了除了谁呀?E-O咱们一-notice只是什么变量未声明直接使用了它给一个提示对吧?你像这种提示错误有必要报出来吗?没有吧,那好了,那现在你再来看哦,我再重启一下服务器,你看我的value这个呃叫什么?Notice还会不会爆了?没启动起来。这里面。再来启动一下,已经运行。不。Redar server重新全部重新启动。红的。黄的。就是不绿。就是不绿,我这会写错了吗?我看看啊一-二。并且除了E-O除了notice,这是没有问题的啊。
04:04
除了TSE对不对?哎,好了绿了啊,绿完以后现在你再来看刷新,你看notice没有,是不是只报挖了对不对?哎,但我这么改是不是都跟我配置文件相关的,哎,每次都要怎么样,我要去配置文件里面,你看这里面修改配置文件中的这个选项设置,为什么设置为这个on是显错误,Of为不显示对吧?设置这个reporting呢?可以干嘛?可以设置任意类型的错误的输出或者不输出对吧?那同样也有什么,也有对应的函数啊,使用error-reporting这个函数也可以去设置错误类型的输出和不输出,那咱们来看啊,我把它改回来。这里边。还是让他报所有的错误?一-A对吧,然后这个呢,报出开关我还是开起来了啊,开起来以后,现在我们再来刷新把它关掉啊,关掉以后我们再来重启我们的服务。阿玛奇,So瑞娜。
05:11
好了啊,解开以后,现在我们来看啊,现在刷新是不是报了,哎,那通过在我当前的这个脚本中。在我当前脚本中,在这里边我可以干嘛呢?我可以设置。错误类型的输出或者不输出叫做EI-r p error reporting,这里面的参数跟配置文件中的是一样,比如E-alr那就是报所有的错误啊,报错有的错误,现在你来看刷新是不是正常的,哎,那么这里再来,比如说我说并且除了谁呀,除了E-o notice。除了notice不报,那这个时候你再来看走你是不是notice没有了,哎,比如说瓦的我也不想报了,那这个时候在,并且除了除了谁E-war啊瓦那不报,这时候来找你,你看是不是可以控制。
06:00
对吧,哎,那OK,这就是什么,我们先控制什么,先控制错误类型的不输出对吧,也就是让用户看不到,那用户看不到以后,接下来干嘛,接下来是得让用户看到啊,哎,我先把它注册掉啊,先把这些东西先删掉。只留他一个了啊,只留他一个,因为笔记里边我已经做了,我还得要错误输出啊。那鼻子里边,你看我是不是也说了这个东西表示什么,并且这个表示除了,那你像我这个E-L并且除了notice是表示报所有的错误,但是谁呀,除了notice对不对啊,这就是让什么呀,让不该看到的人,我是不是可以通过这几种方式看不到错误,那么接下来干嘛是让该看到的人看到,那该看到人看到怎么办?我们还是一样需要去操作配置文件,需要操作配置文件,哪个操作配置文件,咱们看第一件事,我需要关闭配置文件中Facebook play-error设置为of是不关闭错误的输出啊。关闭完以后接下来干嘛?设置存储的类型,设置完以后开启错误日志记录开关,看到了吧,然后接下来干嘛呢?找到配置文件这个东西,这个是错误日志记录到哪呢?记录到Windows系统里边啊,你看直接开启sys logylog,这叫什么错误,这个是系统错误啊,也就是说你所有的PP报错都会记录到哪,记录到你Windows系统错误里面,这个尽量不要去用啊。另外呢,就是什么,我指定一个输出的文件位置。
07:21
啊,这两种都可以,那咱们来看啊,这里面我们就按照这个顺序去改一下,在这块PP在iii这里边第一件事,我现在把所有的错误。显示的都给它关掉对吧,所以这个Di p display-e ors。给它设置为。Of对吧,第一件事给他设为of好了,设为of以后第二件事干嘛,是不是设置错误类型,那OK,我就叫E-L所有错误都输出了啊,然后接下来呢,开启错误日志记录开关,叫ERO-rog。那不对。呃。
08:01
写法了LG-e ors啊在这呢。叫做。最大的长度1024,咱不用管它,我只要啊,你看默认是不是已经开启了对吧?哎,默认已经开启了错误记录开关,那记录在哪个位置呢?那就是logg-ER不对,叫呃ERO-LG来。向下的啊。呃,再来一个。再来一个,再来一个好了,你看这里边是不是有记录到sys logg啊来这是记录呢,记录到系统里面来,我们先记录到系统里面看一下啊,来保存一下,那在这里边我们写错了SYS啊。SYS啊,进入到系统的录制当中,那现在啊,一样,我们需要重启一下我们的阿帕奇。重启。
09:05
好了,重启完以后,现在你看我们再来刷新,诶错误是不是不报了,不报了,它记录到哪是记录到系统里面去了,那记录到系统里边,那好了,我们就查一下系统吧,在这里边我们找一下我们的这个服务。错了。合作服务啊。叫事件查看器。好了,事件查看器里边有个Windows日志,Windows日志里边有个应用程序,点开这个应用程序以后,现在你来看啊,在这里边我们找到这个你看。2020年12月3号是不是今天赠送PP7.4的报错对吧,然后这里边有详细信息报的什么信息,买这个I这个错误吧,对不对,哎,这里边都有你看。再往下来买这傅,哎,是不是刚才我们在页面上看到这个错误,是不是所有的错误都写到系统的这个日志记录里边来了,再来你看这个这个是不是告诉什么,告诉name。
10:01
没有被定义,变量内没有被定义对吧?哎,那系统系统的错误就是他在记录系统的错误,咱们就不要怎么样,不要把PP的时误也写到这里边来了啊,所以不推荐使用这种方式,那怎么办?我们把它注册掉,加个分号是不是就注册了,哎,注释掉以后,接下来看这里边,这里边是不是我这都是我自己加的这些error啊,那咱们来看我就写到我们今天目录里边,那写到今天目录里边,比如我还是用这句话吧啊。嗯。十。六。然后3W下边class没有class对吧,叫做online里面01LESSON16,你看是不是我的路径01LESSON16。对吧,LE16里边有个叫PHP,我没有这个文件的嘛,哎,这个咱们当前目录像肯定没有这个文件,对不对,然后这是不是相对于系统的一个绝对路径,哎,好了,前面没有分号代表它是开启的,开启了以后我就会来保存啊,保存当然默认的时候是这一句啊,这是默认的直接保存到什么呀,保存到我们服务的这个错误日志里面,我们可以通过什么,通过我不指定到这里,我任何一个路径都可以指定过来啊,但是记住目录不能瞎写,就是这个目录必竟是必须是已经存在的才可以,这前面是不是都是目录对不对,文件名是不是不存在,哎,文件名不存在没问题,好了,那现在咱们再来看我重启一下我的服务啊。
11:19
鸡。这里边。好了,那重启完,重启完以后,现在我们再来看啊,我再来刷新我的页面来刷新,诶没有报错对吧?然后你来看我在我当前这里面有没有个pap-ER-LG有吗?打开以后看,这是把错误都写到这里边来了,这是第一个name的错误对吧?这是第二个我们买这块I的错误是不是都写过来了。看到了吗?哎,这就是让什么让该看到的人干嘛,可以看到,是不是解决了,哎,那么另外呢,我们还可以用更好的一种方式,更灵活的一种方式啊,直接让用户去接管,那比如说在这里边啊,我把这些都注释掉了,来注释掉了,给了分号,是不是注释掉了,哎注册掉以后,那同样我的play我还得调回来啊。
12:07
来这play现在是不是为of对吧,我还要给他调回为啊啊,让他报错继续报错啊。继续倒错。不行啊,我还得用它,因为我现在用用户接管嘛,我还能不能让他报错啊,还是of吧,来,那你看咱们来看我可以干嘛呢,使用什么函数。叫做set-e or error-hander hander hander这个函数干嘛呢?用户接管这个。错误处理的方式啊,也可以,那咱们来看,比如在这里边我去调用这个函数去啊,在页面上去开始数,比如说在这个位置吧,我来调用函数啊。来set。I handle,对吧?在调用这个函数,它要求什么呢?你在这里边要给我传一个回调函数,比如do-e or,好了,这就是我回调函数的名称,看到了吧?哎,那咱们可以看一下手册啊,在这里边。
13:04
叫做set-ER handle,你看用户设置用户自定义错误的函数对吧,这里边需要是不是传一个函数,哎,第二个什么,第二个是不是就是设设置这个报错的这个类型啊,哎,然后对于用户的函数,这里面有个要求,什么要求呢?你看好了,嗯。你看以下格式的回调可以传入,那重置这个处理除了可以传入函数里面,还可以传入引用对象,方法不对诶。这怎么没有写呢?他没有写。他没有写。没有写啊,我原来这个手册里面是有写的啊,我我这里面。没有老版本了啊,已经被启用。第五个参数已经被弃用了,不建议使用了,对吧?哎,他这里边原来会记住记录一下,你看以下格式的回调可以传入这个,其实他说的什么意思,就是原来这里面是有写的,就是用户自定义的参数啊,有可能会接收四个值,哪四个值呢?就是这四个值,就是这四个值啊,分别是什么,分别是一个错误的级别,然后呢,错误的一个信息,还有什么,还有这个错误发生所在的文件名,还有什么错误发生所在的行,也就是说自定义的这个用户的函数,你需要干嘛,需要具备这四个参数,那也就是说在这里边。
14:25
我是不是函数名叫do艾,那也就是说在这块你看UC function。Do e or error需要具备哪四个参数?一个叫做Dollar e。还有到了ER杠这个错误的信息是吧,Str,然后还有这个错误的文件嘛,到了ER。到了。杠类错误所发发生所在的行啊,也就是说你用户制定的错误需要干嘛,需要去接收这四个参数去啊好了,那接收这个四个参数以后,那接下来在这里面,我就可以在这里面来输出了,比如说I口一个什么样,或者我这样吧,呃。
15:09
到了ER。Or啊等于等于什么呢?等于当前错误号啊,错误号是什么呢?就是到了ER or-no是不是错误号对吧?当前错误号是它,然后再来连接,连接什么呢?连接一个B吧,然后再来连上这个。当前错误的错误的内容为,为什么呢?为这个Dollar e的spr。然后再来个BR。啊BR好了,然后再连连谁呢,这回是当前。错误的文件为。糟了E。Feel。对吧,然后就是当前错误所在的行为,为什么呢,为这个。呃。
16:03
搞定,然后每一个里边我都给他一个B啊,给个B让他换行,然后这个里边。啊,这里面有BR了啊。我没问题好了,那这里面是不是就有这么一个字符串了,有了这个字符串我就可以干嘛,IO这个E,也就是说它一有错误就会干嘛,就会执行这个东西了,对吧?执行这个东西是不是就调用了这个函数,哎,这个函数名是不是在这个函数内部去调用了,对吧?那调用了是不是我在这里面就输出了,那输出了这个时候你来看,我再来刷新,刷新完你看当前错误号是八,错误内容为他,错误的文件为他,然后再来当前错误的行为多少呢?为五错误号。为二对吧,出入行为五是不是他这段整个这段内容啊,对不对,也就是我输出完一个以后啊,我给他一个HR。输出完一个错误以后,我给那个HR再来刷新,这回你看。是不是这样的,然后当前错误号为二,然后MYSQL这个错误对吧,然后错误的文件在这错误行在第七行,一个在第五行,一个在第七行,那么你看一下我们的代码是不是一个在第七行,一个在第五行。
17:07
对不对,哎,那么一样,那有了它以后,我是不是就可以干嘛,可以指定,比如说我指定是什么样的错误,我就写入到什么样的文件中,是不是更方便了,你比如说我把它注射掉啊,比如他封住它开起来了。比如说这里边啊,我们可以通过什么,通过注号啊,错号,你看它是八括号代表什么意思,二括号代表什么意思,比如在这里边啊,我直接在。函数外边在这吧,我直接挨挨什么,我们错误是不是有叫一-notice这是不是一个常量,这个常量值我来输出是什么东西。是不是八看到了吧,哎,还有什么,还有这个A一个E-E杠什么W8点对吧,你来看它的产量值是多少。走你多少是吧,二,哎,所以刚才我们看到的这个报错一个是二是不是就告诉我的是这个。八这个是八是不是告诉我的notice对不对?哎,所以我根据这两种不同的错误,是不是就可以写入到不同的文件中啊,比如说在这里边SW ch space判断错误号。
18:07
括号对吧?哎,不对,括号是谁啊?ER or-no吧?哎,K,如果它等于二的数,那这个时候我需要干嘛?我是不是报的是什么?报的是挖井的吧?W ni的错误,那我就写到挖的文件中,使用film-to-con,往哪写,往当前目录wa啊,ni.pp里边我就点PP吧,啊,往这里边写,写什么内容呢?或点TST吧,点TST啊,写的内容就是我的这个Dollar e这个字符算对不对?哎,然后再来break。B。然后再来K。等于还有解等于八的数,等于八的数报的是不是就notice的错误了?哎,那这个数杠to-cos这里边再继续往哪写,往OT的T里边写,写什么呢?写这个E好了,那一样给再来个break。
19:03
BI break,那OK,那这个时候我们再来看啊,我再来刷新,刷新完之后是不是没有东西啊,没有东西,你看我这里边是不是就多了两个文件,一个叫做PP,不对,一个叫notice,一个叫。对不对,这马写错了,叫T了啊。叫TST,好,那这个时候我们来看啊,在这里边我们就看notice吧,打开notice。那你看。BR注意,BR在这里面能换行吗?不行吗?因为我这是文本了,BR这不只能在H条码里面换行对不对?那内容报出的内容是不是都给我写过来了,没错吧?哎,所以这里面我们再微调一下这个内容呗,我要想在文本中实现换行的话,那怎么办?这个时候我就不能用它了,而是用什么?而是用我们文本的换行的内容叫什么算号?杠R-N。哦,我得用他俩。才可以啊,然后这个后面的。这个BR。Yeah。
20:01
不要了,再继续双引号。杠二杠。哎,两个连在一起是不是才叫换行对吧?杠R回车回到行首,杠行是换行,换到下一行连起来是不是就换到下一行的行首啊。来双引号杠R-N为什么双引号,因为双引号才能解析这个转移字符吧,对不对啊,这里面一样,双引号结束好了剩下的内容。是不是没有了对吧,最后再连一个,再连一个什么,再连一个。双引号杠R。杠N手就完事,哎,好了,那现在我们再来看啊,再重新刷新一下,来重新刷新,刷新完以后,这个时候再来打开,打开这个,诶这个怎么没掉呢,来给它删掉啊。这个也给它删掉,这个也给它删掉,然后再来刷新,刷新完以后,现在我们来看这俩文件是不是回来了,回来以后打开。打开以后你看错误号为这个是不是就有了,对不对啊,同样挖的错误是不是就写到挖的文件中了,没错吧?哎,这就是用户自定义接管错误的处理方式啊。那么这个函数需要,别忘了需要我们传四个参数啊才可以。
21:03
啊,好了,那有人说,那你为什么你不捕获error瑞的错误呢?注意error瑞的错误,如果在页面中你直接遇到error瑞错误,他是不是代码都执行不下去,对吧,你这样,你就是人一个人活着,突然脑袋掉了,他死了,他能告诉你,他说啊,我脑袋掉了,我死了是不行啊,哎,所以error错误是捕获不到的啊,而且你在写代码的时候,如果你代码中直接是error错误,那你下面代码都输出不了,你说当时就得调整了,对不对?哎,所以我们可能会遇到的错误只有这两个,一个是什么knowledge,一个是wa,所以我们解决他俩就可以了啊好了,这就是咱们错误处理啊,那么另外错误处理里面还有另外一个误处理方式叫什么呢?叫做try cash,那么这个呢,需要等到我们讲到JS,或等到我们后期PP里面讲到pdo的时候,我再去讲解这个try catch的语法啊好了,那前期呢,我们掌握到这些就可以了,那么尤其对于错误处理,他更改的配置文件的内容会比较多啊,我先给它调回来,调回啊啊所以大家下来以后一定要跟着这个视频好好的去。干嘛设置一下你的这些。
22:01
配置文件啊,挨个的去设置,挨个的去尝试一下啊好了,那这节课我们到这里。
我来说两句