环境
- laravel
- Omnipay\Omnipay
- lokielse/omnipay-alipay
今天把系统php版本升级至7.4后,有用户反馈充值后未到账,遂进行了漫长的debug。
首先看了系统日志,发现一个定时审计订单状态的任务一直出错,研究了很久,发现是一个很久之前用的有赞云的接口,其实这个定时任务已经没有用了,因为后来改为支付宝后,订单状态都是主动推送的,遂停用之。。。
之后又去看了一便订单支付,也没什么问题,本来想算了干脆改成yansongda/pay好了,但是似乎依赖有冲突,一直装不上,遂放弃。。。
后来想了想,又去日志里搜了搜订单状态推送的关键词,发现了问题所在
1 2 3 4 5 6 |
[2021-01-26 19:48:24] local.ERROR: ErrorException: Function get_magic_quotes_gpc() is deprecated in /var/www/vendor/riverslei/payment/src/Utils/ArrayUtil.php:108 Stack trace: #0 /var/www/vendor/riverslei/payment/src/Utils/ArrayUtil.php(108): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError() #1 /var/www/vendor/riverslei/payment/src/Common/BaseData.php(113): Payment\Utils\ArrayUtil::createLinkstring() #2 /var/www/vendor/riverslei/payment/src/Common/Ali/AliBaseStrategy.php(70): Payment\Common\BaseData->setSign() #3 /var/www/vendor/riverslei/payment/src/QueryContext.php(99): Payment\Common\Ali\AliBaseStrategy->handle() |
搜了下 ErrorException: Function get_magic_quotes_gpc() 原来是php7.4已经不支持这个方法。
遂去代码中去掉了这段
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$arg = ''; foreach ($para as $key => $val) { if (is_array($val)) { continue; } $arg .= $key . '=' . urldecode($val) . '&'; } //去掉最后一个&字符 $arg && $arg = substr($arg, 0, -1); //如果存在转义字符,那么去掉转义 if (get_magic_quotes_gpc()) { $arg = stripslashes($arg); } return $arg; |
重新测试后,终于不再报错
所以以后生产环境还是不能频繁升级,前几天刚因为从PHP7.2升级到PHP7.3忘记安装extensions导致付款二维码没办法生成。这次升级虽然记得装extensions,但是又出现其他问题。。。
There are no comments yet