fastadmin会员签到插件报错提示cal_days_in_month()未定义

发布于 2020-02-22 11:55:28

fastadmin官方的会员签到插件补签的时候报错

提示cal_days_in_month()未定义 我看你们站点的没问题,求助怎么解决的啊?
dqdl.net_Fr8z1RgVyRPpOgowqKwgOwWLtEWs.png

查看更多

关注者
0
被浏览
2.8k
jianbs
jianbs 认证专家 2020-02-23
曾梦想仗剑走天涯,谁知后来剑被偷了...

百度上有这个解答,cal_days_in_month()是PHP内置的一个计算某个月当中天数的函数
由于PHP编译时没有加上--enable-calendar选项,就会报函数未定义。
用下面这个用法替代cal_days_in_month()涵数。
$dayCount = date("t",strtotime("2020-02"));//计算2月份有多少天
既然是fastadmin插件,我就直接把代码搬运上来吧。

需要修改/extend/fast/Date.php文件如下:
注释掉如下代码

$time = $position ? mktime(0, 0, 0, $month + $offset, 1, $year) : mktime(23, 59, 59, $month + $offset, cal_days_in_month(CAL_GREGORIAN, $month + $offset, $year), $year);

替换为

$time = $position ? mktime(0, 0, 0, $month + $offset, 1, $year) : mktime(23, 59, 59, $month + $offset, date("t",strtotime($year."-".($month + $offset))), $year);

注释掉如下代码

$time = $position ?
                    mktime(0, 0, 0, 1 + ((ceil(date('n', mktime(0, 0, 0, $month, $day, $year)) / 3) + $offset) - 1) * 3, 1, $year) :
                    mktime(23, 59, 59, (ceil(date('n', mktime(0, 0, 0, $month, $day, $year)) / 3) + $offset) * 3, cal_days_in_month(CAL_GREGORIAN, (ceil(date('n', mktime(0, 0, 0, $month, $day, $year)) / 3) + $offset) * 3, $year), $year);

替换为

$time = $position ?
                    mktime(0, 0, 0, 1 + ((ceil(date('n', mktime(0, 0, 0, $month, $day, $year)) / 3) + $offset) - 1) * 3, 1, $year) :
                    mktime(23, 59, 59, (ceil(date('n', mktime(0, 0, 0, $month, $day, $year)) / 3) + $offset) * 3, date("t",strtotime($year."-".(ceil(date('n', mktime(0, 0, 0, $month, $day, $year)) / 3) + $offset) * 3)), $year);

收工。

2 个回答
177****8881
177****8881 2020-02-22

函数没有定义啊,检查下

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览