PHP 7连接MSSQL时出现Uncaught Error: Call to undefined function odbc_connection()错误的解决求助
解决PHP7连接MSSQL时
odbc_connection()未定义的错误 这个错误很明确——你的PHP环境里ODBC扩展没启用或者根本没安装,我来一步步帮你解决:
一、需要的扩展说明
你用到的odbc_connection()属于PHP的ODBC扩展,不同系统下对应的扩展文件不一样:
- Windows:
php_odbc.dll - Linux:
php_odbc.so
另外,微软官方提供了更适配MSSQL的sqlsrv扩展(包含sqlsrv和pdo_sqlsrv),性能和兼容性更好,我也会补充这个选项的配置方法。
二、Windows系统配置步骤
- 先检查你的PHP安装目录下的
ext文件夹,看看有没有php_odbc.dll文件。如果没有,需要下载和你的PHP7版本完全匹配的扩展(注意区分32/64位、线程安全(TS)/非线程安全(NTS),必须和你的PHP环境一致)。 - 打开
php.ini配置文件,找到类似;extension=odbc的行,去掉前面的分号注释:; 旧版PHP7可能需要写完整文件名 extension=php_odbc.dll ; PHP7.4及以上版本可以简化为 extension=odbc - 重启你的Web服务器(比如Apache、IIS)或者PHP-FPM服务。
- 创建一个测试文件,写入
<?php phpinfo(); ?>,访问它搜索“ODBC”,确认扩展已经成功加载。
三、Linux系统配置步骤
- 通过包管理器安装ODBC相关依赖和PHP扩展:
- Debian/Ubuntu系列:
sudo apt-get update && sudo apt-get install unixodbc unixodbc-dev php-odbc - CentOS/RHEL系列:
sudo yum install unixODBC unixODBC-devel php-odbc
- Debian/Ubuntu系列:
- 重启PHP-FPM或者Web服务器(比如Apache):
# 以PHP7.x版本的FPM为例 sudo systemctl restart php7.x-fpm - 同样用
phpinfo()验证ODBC扩展是否加载成功。
四、推荐:使用微软官方sqlsrv扩展(更适配MSSQL)
如果后续连接MSSQL遇到兼容性问题,推荐切换到微软官方的sqlsrv扩展:
- 下载对应PHP7版本的
sqlsrv和pdo_sqlsrv扩展文件(Windows是dll,Linux是so)。 - 把扩展文件放到PHP的
ext目录。 - 在
php.ini里添加两行:extension=sqlsrv extension=pdo_sqlsrv - 重启服务后,就可以用
sqlsrv_connect()来连接MSSQL了,这个函数是专门为SQL Server设计的,稳定性更好。
注意事项
- 一定要确保扩展版本和你的PHP版本、系统位数、线程安全模式完全匹配,否则扩展会加载失败,还是会报错。
- 如果修改php.ini后没生效,检查你是不是改了错误的php.ini文件(可以通过
phpinfo()里的“Loaded Configuration File”查看当前生效的配置文件路径)。
内容的提问来源于stack exchange,提问作者Francy Ross
相关产品推荐
相关产品推荐

