服务器运行PHP项目出现Call to undefined function cal_days_in_month()错误
解决「Call to undefined function cal_days_in_month()」错误的方案
这个问题我帮不少开发者排查过,根本不是权限配置的问题——cal_days_in_month() 是PHP的Calendar扩展提供的函数,XAMPP为了方便本地开发,默认就预装并启用了这个扩展,但很多生产服务器(尤其是那种精简配置的)默认是没开启甚至没安装这个扩展的,这就是你本地正常、服务器报错的核心原因。
具体解决步骤
根据你的服务器系统和权限情况,对应操作如下:
1. 拥有SSH权限的独立服务器(Debian/Ubuntu系列)
- 先安装Calendar扩展:
sudo apt-get update sudo apt-get install php-calendar - 安装完成后,重启你的Web服务和PHP-FPM(如果用的话):
# 重启Apache sudo systemctl restart apache2 # 重启Nginx + PHP-FPM sudo systemctl restart nginx sudo systemctl restart php-fpm
2. 拥有SSH权限的独立服务器(CentOS/RHEL系列)
- 安装扩展:
# CentOS 7及以下用yum sudo yum install php-calendar # CentOS 8+用dnf sudo dnf install php-calendar - 同样重启服务:
# 重启Apache sudo systemctl restart httpd # 重启Nginx + PHP-FPM sudo systemctl restart nginx sudo systemctl restart php-fpm
3. 无SSH权限的共享主机
- 登录你的主机控制面板(比如cPanel、Plesk),找到「PHP选项」或者「PHP扩展管理」的入口;
- 在扩展列表里找到「calendar」选项,勾选启用后保存设置即可。
验证扩展是否生效
你可以在服务器上创建一个临时的PHP文件(比如命名为check_calendar.php),内容如下:
<?php phpinfo(); ?>
通过浏览器访问这个文件,搜索「calendar」关键词,如果能看到该扩展的详细配置信息,就说明已经启用成功了,此时再运行你的项目就不会出现那个错误了。
内容的提问来源于stack exchange,提问作者sahithi
相关产品推荐
相关产品推荐

