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

Windows系统XAMPP环境下PHP 8.2+Laravel 10连接MSSQL数据库失败求助

Windows系统XAMPP环境下PHP 8.2+Laravel 10连接MSSQL数据库失败求助

嗨,看了你的问题描述,我发现几个关键的问题点,咱们一步步来排查解决:

1. 数据库连接配置的核心错误

你在报错信息里看到的PDO构造用了dblib:host=XX.XX.XX.XX:3306,这两个地方都错了:

  • 协议错误:dblib是旧的FreeTDS驱动的协议,而你安装的是微软官方的sqlsrv/pdo_sqlsrv驱动,对应的协议应该是sqlsrv。Laravel里只要把.env里的DB_CONNECTION设为sqlsrv,框架会自动生成正确的DSN,不需要手动写dblib开头的连接字符串。
  • 端口错误:你写的3306是MySQL的默认端口,MSSQL的默认端口是1433,除非你特意修改过MSSQL的端口,否则这个端口肯定连不上目标数据库。

修正后的.env配置应该类似这样:

DB_CONNECTION=sqlsrv
DB_HOST=XX.XX.XX.XX
DB_PORT=1433
DB_DATABASE=XXXXX
DB_USERNAME=XXXXX
DB_PASSWORD=^XXXXX

2. PHP扩展配置冗余且有错误

你在php.ini里加了三行扩展配置:

extension=sqlsrv
extension=php_pdo_sqlsrv_82_ts_x64.dll
extension=php_sqlsrv_82_ts_x64

这里有两个问题:

  • 冗余:PHP支持简写扩展名称,只要驱动文件在ext目录下,只需要写extension=sqlsrv和extension=pdo_sqlsrv就够了,不需要写完整的文件名。
  • 拼写错误:最后一行extension=php_sqlsrv_82_ts_x64缺少了.dll后缀,会导致这个扩展加载失败。

建议把php.ini里的扩展配置改成:

extension=sqlsrv
extension=pdo_sqlsrv

3. 注意区分Web和CLI的PHP配置

php artisan migrate用的是命令行(CLI)版本的PHP,它的配置文件可能和XAMPP里Web服务器用的PHP配置不是同一个!

你可以在终端运行以下命令查看CLI版本的PHP加载的配置文件路径:

php --ini

找到Loaded Configuration File对应的路径,打开这个php.ini文件,确保里面也添加了上面提到的两行扩展配置,并且驱动文件确实在该PHP的ext目录下。

4. 验证驱动是否真正加载成功

在终端运行以下命令,查看已加载的PHP模块:

php -m

检查输出列表里是否有sqlsrv和pdo_sqlsrv两个模块。如果没有,说明CLI版本的PHP没加载到驱动,需要确认:

  • 驱动文件的版本是否和你的PHP版本匹配(你用的是8.2 TS x64,你的PHP必须是线程安全(Thread Safe)的64位版本,可以用php -v查看,输出里会有Thread Safety => enabled)。
  • 驱动文件是否放在了CLI版本PHP的ext目录下。

最后一步:重启服务并测试

修改完配置后,记得:

  1. 重启XAMPP的Apache服务。
  2. 关闭当前终端,重新打开一个新终端(确保CLI的PHP配置生效)。
  3. 再次运行php artisan migrate试试。

备注:内容来源于stack exchange,提问作者Akanksha Dwivedi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 16:02:59