php 打印变量-记PHP网站建设的一个错误修复

2023-08-29 0 9,362 百度已收录

找出问题

前两天同事给我一个本地搭建的PHP网站,说只要打开某个模块就会报错。 一般情况如下:

只要打开这个“百度统计”,就会显示错误信息:

不难定位这个问题的位置。 毕竟,错误文件,甚至错误的具体位置php 打印变量,都已经在网页上显示出来了。 然后我就去网站目录下的“app/Http/ControllersAdmin/StatisticAnalysisController.php”看看。

首先复制错误变量“$data['content']”来查看返回的内容:

返回内容为“Access token expired”,表示“access token”已过期。 然后你需要找出这个“访问令牌”是如何设置的。 首先,根据第198行的代码,可以知道这个变量“$data['content']”是通过调用方法“gh_curl”获得的,传入参数“$sa_arr['method']”,“ $sa_arr[ 'url']"、"$sa_arr['query']['content']" 均从 "SA_URL_ARR[$sa_name]" 获取(第 196 行)。 “SA_URL_ARR”是类中的常量,类型是字典,它的键“$sa_name”是“getSiteList”,看看对应的通配符:

值得一提的是,这里的“access_token”是空的。 然后查看“gh_curl”方法的具体内容:

从第444行到第446行,方法“gh_curl”会首先判断“$query['access_token']”是否为空,如果为空,则会调用方法“get_sa_access_token”获取“access_token”。

然后查看“get_sa_access_token”方法的具体内容:

奇怪的是,虽然这个方法的代码很长,但是它在第一行返回了一个固定值“121.89xxxx7Q”(代码406),而这个固定的“access_token”已经过期,导致网站报错。

现在问题的原因已经确定,是时候修复错误了。

我试图将第406行代码注释掉,让它执行前面的代码,但结果还是报错:

问题修复

报错的原因是网站中没有Redis配置文件,所以我选择跳过代码中使用的Redis,按照他的逻辑重新编译代码。 虽然你也可以在这里配置Redis,但无论如何你都需要编译代码。

在写代码之前,先查一下相关资料,了解一下百度开放平台的“access_token”(网址链接:%E4%BD%BF%E7%94%A8Refresh_Token%E8%8E%B7%E5%8F%96Access_Token):

简单来说,百度开放平台将为用户提供有效期为10年的Refresh Token和有效期为1个月的Access Token。 您可以使用Refresh Token进行刷新,获取新的Access Token。

根据原代码中的407到426行,该方法会首先读取Redis中“refresh_token”的值,如果没有,则去“sa_refresh_token.php”获取“refresh_token”的值,然后按照配置刚才获取到的好“client_id”、“client_secret”和“refresh_token”,以GET的形式从URL“”中获取“access_token”和“refresh_token”,并将“access_token”作为方法的返回值,并将“refresh_token”重写回Redis和“sa_refresh_token.php”以防失效。

理解了这个逻辑之后,只需要省略读写回Redis的部分即可。 修改后的代码如下:

修改并保存后php 打印变量,再次访问该模块,终于可以正常显示了:

这次网站建设涉及到改代码的过程,比较少见,所以记录下来,希望能给大家一些启发。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 php php 打印变量-记PHP网站建设的一个错误修复 https://www.wkzy.net/game/182870.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务