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

求助:如何通过wp-config.php配置WordPress连接SQL Server?连接失败报错

解决WordPress无法连接SQL Server的问题

我来帮你拆解这个让人头疼的问题——你能用纯PHP代码连上SQL Server,但WordPress用相同凭据却失败,这大概率是驱动不匹配和地址配置格式的问题,咱们一步步来解决:

核心原因:WordPress默认用MySQL的mysqli驱动,不直接支持SQL Server

纯PHP能连接是因为你大概率用了sqlsrv_connect()这类专门针对SQL Server的函数,但WordPress默认调用的是mysqli扩展的方法(比如报错里的mysqli_real_connect()),而mysqli是为MySQL设计的,根本无法和SQL Server通信,这是最关键的问题。

具体解决步骤

1. 给WordPress配置SQL Server专用驱动

首先要让WordPress使用SQLSRV驱动,有两种方式:

  • 插件方式(推荐):安装专门的WordPress SQL Server驱动插件,比如WP DB Driver for SQL Server,插件会自动替换WordPress的数据库驱动,不用手动改代码。
  • 手动配置:在wp-config.php里添加一行代码,指定使用sqlsrv驱动:
    define('DB_DRIVER', 'sqlsrv');
    
    同时确保你的PHP已经安装并启用了sqlsrv和pdo_sqlsrv扩展——可以通过phpinfo()页面查看是否有这两个扩展的信息,如果没有,需要下载对应PHP版本的SQLSRV扩展,放到PHP的ext目录,然后在php.ini里添加:
    extension=sqlsrv
    extension=pdo_sqlsrv
    
    重启你的Web服务器(比如Apache或IIS)生效。

2. 修正DB_HOST的格式

SQL Server的地址格式和MySQL不一样,不能直接用localhost,需要指定实例名或端口:

  • 如果是本地默认实例,改成:localhost\SQLEXPRESS,1433(1433是SQL Server默认端口)
  • 如果是用IP访问,改成:127.0.0.1,1433
  • 如果是远程服务器,换成对应的服务器IP/域名+端口,比如192.168.1.100,1433

为什么用localhost会报“主动拒绝连接”?因为mysqli默认会把localhost解析为MySQL的unix socket连接,而SQL Server用的是TCP/IP端口,所以它会尝试连接3306端口(MySQL默认端口),但你的机器上没开MySQL服务,就会被拒绝。

3. 确认SQL Server的TCP/IP连接已启用

打开SQL Server配置管理器,依次找到:

SQL Server网络配置 → 你的SQL Server实例的网络配置 → TCP/IP
右键启用TCP/IP,然后重启SQL Server服务,确保它在1433端口监听。

4. 核对数据库凭据权限

虽然纯PHP能连,但要确认你的SQL Server账号:

  • 拥有WordPress目标数据库的读写权限
  • 如果是Windows认证,需要配置Web服务器的运行账号有访问SQL Server的权限(这种情况WP的DB_USER和DB_PASSWORD可以留空,但要确保驱动支持Windows认证)
  • 如果是SQL Server认证,确保用户名格式正确(不需要域名前缀,除非是域账号)

验证修改

修改完wp-config.php的DB_HOST、添加DB_DRIVER配置后,刷新WordPress页面,应该就能正常连接了。如果还是报错,检查PHP的错误日志,看是否有更详细的驱动错误信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:21:50