服务器报错Call to undefined function finfo_open(),本地运行正常求助
解决
Call to undefined function finfo_open() 服务器部署错误 嘿,这个问题其实很典型——你的服务器PHP环境没启用fileinfo扩展,而本地环境默认已经开启了,所以才会出现本地正常运行、服务器报错的情况。finfo_open()这类函数完全依赖这个扩展,咱们一步步搞定它:
第一步:确认服务器是否安装/启用fileinfo扩展
你可以用两种方式快速检查:
- 命令行方式:登录服务器,执行
php -m,查看输出列表里有没有fileinfo这一项。没有的话就说明没安装或未启用。 - 网页方式:在服务器上临时创建一个
phpinfo.php文件,内容为<?php phpinfo(); ?>,访问该页面后搜索fileinfo,找不到就代表未启用。
第二步:启用fileinfo扩展(分不同环境操作)
Linux服务器(Ubuntu/Debian)
直接通过包管理器安装扩展:
sudo apt-get install php-fileinfo
安装完成后重启Web服务:
# Apache用户执行 sudo systemctl restart apache2 # Nginx+PHP-FPM用户执行 sudo systemctl restart php-fpm sudo systemctl restart nginx
Linux服务器(CentOS/RHEL)
用yum命令安装扩展:
sudo yum install php-fileinfo
同样需要重启服务:
# Apache用户执行 sudo systemctl restart httpd # Nginx+PHP-FPM用户执行 sudo systemctl restart php-fpm sudo systemctl restart nginx
Windows服务器
找到PHP安装目录下的php.ini文件,打开后找到这一行:
;extension=fileinfo
把行首的分号;删除,修改为:
extension=fileinfo
最后重启IIS或Apache服务即可。
虚拟主机面板(宝塔、cPanel等)
- 宝塔面板:进入PHP管理页面,找到「扩展」选项,找到
fileinfo点击启用,然后重启PHP服务。 - cPanel:进入「Select PHP Version」,在扩展列表里勾选
fileinfo,保存设置即可生效。
第三步:验证修复效果
再次用第一步的方法检查fileinfo是否出现在已启用扩展列表中,然后重新运行你的代码,这个错误应该就消失了。
补充说明:如果你的服务器PHP版本低于5.3.0,可能需要手动编译安装fileinfo,但现在主流PHP版本都已内置该扩展,只是默认未启用,所以大概率不需要走编译流程。
内容的提问来源于stack exchange,提问作者kunaljagtap19
相关产品推荐
相关产品推荐

