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

在CodeIgniter中配置MS SQL集成安全SSPI实现Windows身份验证

解决CodeIgniter(XAMPP)通过Windows集成安全访问MS SQL的问题

以下是针对你的场景的具体解决步骤:

  • 修正CodeIgniter数据库配置
    你当前的配置缺少集成安全的明确声明,sqlsrv驱动不会默认启用Windows身份验证,需要通过dsn或hostname参数指定:
    方法1:使用DSN配置(推荐)
    修改database.php中的参数:

    'dsn'   => 'sqlsrv:Server=HOSTNAME;Database=MY_DATABASE;Integrated Security=SSPI',
    'hostname' => '',
    //'username' => 'USERNAME',  // 保持注释
    //'password' => 'PASSWD',    // 保持注释
    'database' => '',  // 因为DSN已指定数据库,这里可以留空
    'dbdriver' => 'sqlsrv',
    // 其他参数保持不变
    

    方法2:在Hostname中追加参数
    如果不想用DSN,可修改hostname:

    'hostname' => 'HOSTNAME;Integrated Security=SSPI',
    // 其他参数保持注释和原有配置
    

    注意:如果你的SQL Server是命名实例(比如SQLEXPRESS),需要把HOSTNAME改成HOSTNAME\SQLEXPRESS;端口非默认1433的话再加,端口号,例如HOSTNAME\SQLEXPRESS,1434;Integrated Security=SSPI

  • 移除无用的php.ini配置
    mssql.secure_connection=On是针对旧版mssql扩展的配置,你用的是sqlsrv扩展,这个参数完全无效,直接在php.ini中注释或删除该条目,避免干扰。

  • 确认sqlsrv扩展正常启用

    1. 检查XAMPP的php/ext目录下是否存在对应PHP版本的php_sqlsrv.dll和php_pdo_sqlsrv.dll(注意匹配x86/x64、线程安全TS/非线程安全NTS,XAMPP默认是TS版本)
    2. 在php.ini中添加以下两行(如果没有的话):
      extension=sqlsrv
      extension=pdo_sqlsrv
      
    3. 重启Apache服务,通过phpinfo()页面搜索sqlsrv,确认扩展已加载。
  • 验证服务运行账户的数据库权限
    Windows集成安全使用的是运行Apache服务的Windows账户,而非你当前登录的用户:

    1. 打开服务管理器,找到Apache2.4(XAMPP的Apache服务),查看其“登录身份”
    2. 在MS SQL Server中,给该账户添加登录权限,并授予目标数据库的访问权限(比如db_datareader、db_datawriter等)
    • 如果服务用的是本地系统账户,则需要在SQL Server中添加NT AUTHORITY\SYSTEM作为登录名,并配置对应权限
  • 先测试底层连接(排除CodeIgniter问题)
    写一个简单的PHP脚本放在XAMPP的htdocs目录下,测试直接连接SQL Server,确认底层连接正常:

    <?php
    $serverName = "HOSTNAME"; // 替换为你的SQL Server地址/实例名
    $connectionOptions = [
        "Database" => "MY_DATABASE",
        "IntegratedSecurity" => true
    ];
    $conn = sqlsrv_connect($serverName, $connectionOptions);
    
    if ($conn) {
        echo "数据库连接成功!";
        sqlsrv_close($conn);
    } else {
        echo "连接失败,错误信息:<br>";
        print_r(sqlsrv_errors(), true);
    }
    ?>
    

    如果这个脚本连接失败,先解决底层问题,再回到CodeIgniter配置排查。

内容的提问来源于stack exchange,提问作者SRK

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 04:40:23