**此问题一般出现于支付宝的支付回调等页面,主要问题就是页面设计的时候,使用的是php5的算法,升级为php7以后相关算法和函数有所变化,导致了相关问题的出现。
一般问题如下:**
count(): Parameter must be an array or an object that implements Countable in gateways/callback/alipay_callback.php on line 40
这种情况,需要调整count函数,修改为strlen函数一般可以得到解决。具体操作如下:
可以在执行前判断一下:
if(is_array($arr)){
count($arr);
}
如果统计的是字符串,则可以替换为:strlen()函数。
修改:$arg = substr($arg,0,count($arg)-2);
$arg = substr($arg,0,count($arg)-2);
为:$arg = substr($arg,0,strlen($arg)-1);
$arg = substr($arg,0,strlen($arg)-1);
这里注意函数修改后,后面的数字要相应增加1 。
扩展问题阅读和解决
同步发生的问题有时候还会有ereg()函数和eregi()函数的错误。这种错误一般提示为:
Call to undefined function eregi() in modules/gateways/callback/alipay_callback.php on line 43
**此类问题同样是由于php7和php5的部分函数不兼容导致。在php5.3以上的版本将不再支持eregi()和ereg()函数。
ereg()函数和eregi()函数用法相同,不同之处在与ereg()区分大小写,eregi()不区分大小写。
这个情况采用类似的方法替换eregi()为preg_match(),具体方法参考:**
正则函数处理
ereg('aB',$str); //区分大小写
eregi('ab',$str); //不分大小写
分别替换为:
preg_match('/aB/',$str); //区分大小写
preg_match('/ab/i',$str); //不分大小写
如果ereg_replace(); 报错替换成preg_replace();
只此问题得到解决。
版权属于: 三三世界-百宝箱
本文链接: http://33f.net/build/php7_count_error_strlen.html
本文最后更新于2021年12月07日 ,已超过1581天没有更新,若内容或图片失效,请留言反馈。
本文允许转载,但请在转载时请以超链接或其它形式标明文章出处
@Doug Shume it's ok for me , you can post here.
zh.us.to 有效
kms.03k.org 有效
kms.chinancce.com
kms.shuax.com 有效
kms.dwhd.org 有效
kms.luody.info 有效
kms.digiboy.ir 有效
kms.lotro.cc 有效
www.zgbs.cc 有效
cy2617.jios.org 有效
@ 权限问题,试试sudo 再加命令。
你好提示Permission denied 怎么办啊