Laravel如何用Microsoft凭据连接SQL Server?Laravel 5怎么通过Windows身份验证连接?
在Laravel 5中通过Windows身份验证连接SQL Server
刚好之前帮团队搞定过Laravel 5对接SQL Server的Windows身份验证场景,给你梳理下亲测有效的完整步骤,连踩过的坑也一并告诉你:
1. 先搞定必要的PHP扩展
Laravel连接SQL Server依赖微软官方的PDO扩展,你需要确保以下两个扩展已经启用:
php_pdo_sqlsrv.dllphp_sqlsrv.dll
操作步骤:
- 下载对应你PHP版本(注意区分x86/x64、线程安全与否)的扩展包
- 把dll文件放到PHP的
ext目录下 - 打开
php.ini,添加两行配置:extension=php_sqlsrv.dll extension=php_pdo_sqlsrv.dll - 重启你的Web服务器(Apache/Nginx/IIS),可以通过
phpinfo()确认扩展是否加载成功
2. 配置环境变量(.env文件)
Laravel 5用.env管理环境配置,修改以下几项:
DB_CONNECTION=sqlsrv DB_HOST=localhost # 或者你的SQL Server主机名/IP,比如DESKTOP-XXXXXX\SQLEXPRESS DB_DATABASE=你的数据库名称 # Windows身份验证不需要用户名密码,添加下面这行开启信任连接 DB_TRUSTED_CONNECTION=yes
注意:如果你的SQL Server是命名实例,DB_HOST要写成
主机名\实例名的格式,比如DESKTOP-1234\SQLEXPRESS
3. 完善database.php配置
打开config/database.php,找到connections数组里的sqlsrv项,调整配置确保支持Windows身份验证:
'sqlsrv' => [ 'driver' => 'sqlsrv', 'host' => env('DB_HOST', 'localhost'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', ''), # Windows验证留空 'password' => env('DB_PASSWORD', ''), # Windows验证留空 'charset' => 'utf8', 'prefix' => '', 'prefix_indexes' => true, // 新增这行,读取.env里的信任连接配置 'trusted_connection' => env('DB_TRUSTED_CONNECTION', false), ],
4. 关键的权限注意事项(踩过的坑!)
这一步90%的新手会忽略:
- 本地开发:运行Web服务器的进程(比如Apache的httpd.exe、IIS的应用池)要使用有SQL Server访问权限的Windows账户,本地用当前登录账户一般没问题
- 服务器部署:一定要把Web服务器的运行身份设置为拥有目标数据库读写权限的Windows账户,不然会直接报“登录失败”的错误
5. 测试连接是否成功
打开终端进入项目根目录,执行:
php artisan tinker
然后在tinker交互环境中执行:
DB::connection()->getPdo();
如果没有抛出任何异常,说明连接已经成功建立啦!
内容的提问来源于stack exchange,提问作者Led
相关产品推荐
相关产品推荐

