You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS下XAMPP环境CodeIgniter调用odbc_connect报错求助

macOS下XAMPP环境中启用ODBC连接MS SQL的问题与解决

问题背景

此问题曾被标记为已解决,但现有答案多针对Windows环境提供.dll文件下载方案,不适用于macOS用户,且未明确说明如何为XAMPP安装的PHP配置pdo_sqlsrv、sqlsrv及ODBC扩展。

本人在CodeIgniter 3.1.9中尝试通过ODBC连接MS SQL数据库,配置如下:

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'x.x.x.x',
    'username' => 'sa',
    'password' => 'xxx',
    'database' => 'xxx',
    'dbdriver' => 'odbc'
);

执行后出现报错:

An uncaught Exception was encountered
Type: Error

Message: Call to undefined function odbc_connect()

Filename: /Applications/XAMPP/xamppfiles/htdocs/gpweb/system/database/drivers/odbc/odbc_driver.php

Line Number: 141

查看XAMPP的php.ini文件,发现以下行因开头分号被禁用:

;extension=php_pdo_odbc.dll

已知.dll是Windows文件,不适用于macOS,但尝试启用后出现更多错误:

A PHP Error was encountered
Severity: Core Warning

Message: PHP Startup: Unable to load dynamic library '/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20160303/php_pdo_odbc.dll' - dlopen(/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20160303/php_pdo_odbc.dll, 0x0009): tried: '/Applications/XAMPP/xamppfiles/lib/php_pdo_odbc.dll' (no such file), '/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20160303/php_pdo_odbc.dll' (no such file)

Filename: Unknown

Line Number: 0

解决方案

步骤1:安装微软ODBC Driver for SQL Server(macOS版)

macOS需要先安装官方ODBC驱动,才能让PHP的ODBC扩展正常工作:

  • 打开终端,通过Homebrew安装(未安装Homebrew需先完成安装):
    brew install msodbcsql17 mssql-tools
    
    该命令会安装ODBC驱动17版本及配套SQL Server工具,满足连接MS SQL的基础依赖。

步骤2:为XAMPP的PHP启用/安装ODBC扩展

XAMPP自带的PHP默认未编译ODBC扩展,需手动处理:

  1. 确认XAMPP PHP版本与配置路径
    终端执行以下命令查看PHP版本:

    /Applications/XAMPP/xamppfiles/bin/php -v
    

    记录版本号(例如PHP 7.1.x,对应扩展目录no-debug-non-zts-20160303)。

  2. 通过pecl安装适配扩展
    由于XAMPP的PHP独立于系统PHP,需用XAMPP自带的pecl工具安装:

    • 切换到XAMPP的PHP bin目录:
      cd /Applications/XAMPP/xamppfiles/bin
      
    • 安装pdo_odbc和odbc扩展:
      ./pecl install pdo_odbc
      ./pecl install odbc
      
      安装过程中提示ODBC配置路径时,直接按回车使用默认即可(Homebrew安装的驱动已配置好环境)。
  3. 修改php.ini启用扩展
    打开XAMPP的php.ini(路径一般为/Applications/XAMPP/xamppfiles/etc/php.ini),将原Windows格式的扩展行替换为macOS适配格式:

    extension=pdo_odbc.so
    extension=odbc.so
    

    若pecl安装后已自动添加这些行,只需确保行首无分号注释即可。

  4. 重启XAMPP Apache服务
    打开XAMPP控制面板,停止并重新启动Apache,使扩展生效。

步骤3:验证ODBC扩展是否生效

在XAMPP的htdocs目录下新建phpinfo.php文件,内容如下:

<?php phpinfo(); ?>

访问http://localhost/phpinfo.php,搜索odbc和pdo_odbc,若能找到对应模块信息,说明扩展已成功启用。

步骤4:调整CodeIgniter数据库配置

推荐使用DSN方式配置,稳定性更高:

$db['default'] = array(
    'dsn'   => 'Driver={ODBC Driver 17 for SQL Server};Server=x.x.x.x;Database=xxx;',
    'username' => 'sa',
    'password' => 'xxx',
    'dbdriver' => 'odbc'
);

注意Driver={ODBC Driver 17 for SQL Server}需与之前安装的驱动版本名称一致。

替代方案:使用sqlsrv扩展(推荐)

若无需ODBC,可直接安装微软官方的sqlsrv和pdo_sqlsrv扩展,更适配MS SQL:

  1. 通过pecl为XAMPP的PHP安装:
    cd /Applications/XAMPP/xamppfiles/bin
    ./pecl install sqlsrv pdo_sqlsrv
    
  2. 修改php.ini添加:
    extension=sqlsrv.so
    extension=pdo_sqlsrv.so
    
  3. 重启Apache后,将CodeIgniter数据库配置的dbdriver改为sqlsrv(CI3.1.9原生支持该驱动)。

内容的提问来源于stack exchange,提问作者Grand Marshal Braev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 06:51:18