PHP7.2环境调用cal_info()函数报未定义致命错误如何解决?
报错原因
cal_info() 属于PHP的calendar扩展提供的函数,该扩展默认不会随PHP核心编译启用,你当前的PHP7.2环境未安装启用该扩展,因此调用时会抛出未定义函数的致命错误。
解决方案
方案1:安装启用calendar扩展
源码编译安装PHP的场景:
编译PHP时添加--enable-calendar配置参数,重新编译安装后生效。
Linux包管理器安装PHP的场景(适配PHP7.2版本):- Debian/Ubuntu系列:执行命令
apt install php7.2-calendar,安装完成后重启PHP-FPM或CLI进程即可 - CentOS/RHEL系列:执行命令
yum install php72w-calendar,安装完成后重启PHP相关进程即可
Windows环境场景:
打开php.ini配置文件,找到;extension=php_calendar.dll行,删除行首的分号注释,保存配置后重启PHP服务即可。
- Debian/Ubuntu系列:执行命令
方案2:无扩展的代码替代实现
如果没有权限修改PHP环境配置,可以直接替换原有业务代码实现相同功能,无需依赖calendar扩展:
private function month($month, $abbrev = true) { $month = intval($month); if ($abbrev) { $abbrevmonths = [ 1 => 'Jan', 2 => 'Feb', 3 => 'Mar', 4 => 'Apr', 5 => 'May', 6 => 'Jun', 7 => 'Jul', 8 => 'Aug', 9 => 'Sep', 10 => 'Oct', 11 => 'Nov', 12 => 'Dec' ]; return $abbrevmonths[$month] ?? ''; } else { $months = [ 1 => 'January', 2 => 'February', 3 => 'March', 4 => 'April', 5 => 'May', 6 => 'June', 7 => 'July', 8 => 'August', 9 => 'September', 10 => 'October', 11 => 'November', 12 => 'December' ]; return $months[$month] ?? ''; } }
如果需要返回中文月份,直接替换数组中的值即可。
内容的提问来源于stack exchange,提问作者Ítalo Torres Lima
相关产品推荐
相关产品推荐

