我有一个运行php 5.5.9的ubuntu docker容器,laraverl 5.2可以成功连接到SQL Server并获得结果。
我使用的泊坞窗图片是https://hub.docker.com/r/h2labs/laravel-mssql/
我得到的问题是服务器使用加密,我无法找到如何将以下参数传递给mssql的laravel连接字符串
ENCRYPT=yes;trustServerCertificate=true
目前我的SQL Server连接字符串如下所示
DB_CONNECTION=sqlsrv
DB_HOST=sql.mydomain.com
DB_PORT=1433
DB_DATABASE=mydbname
DB_USERNAME=mysusername
DB_PASSWORD=mypass
我的laravel数据库配置看起来像这样
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
],
SQL Server错误日志条目是
连接到此服务器需要加密,但客户端库不支持加密;连接已关闭。请升级您的客户端库。 [客户:103.31.114.56]
答案 0 :(得分:0)
未引入对任一选项的支持until Laravel 5.4;具体而言,v5.4.11
所以你首先需要升级到laravel / framework:> = 5.4.11,< 5.5
然后,要配置您的应用程序,您需要修改config / database.php文件,如下所示:
// ...
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'encrypt' => 'yes', // alternatively, defer to an env variable
'trust_server_certificate' => 'true', // alternatively, defer to an env variable
],
// ...
DatabaseServiceProvider,通过ConnectionFactory和SqlServerConnector将使用它来构建DSN中设置的那些选项的基础PDO连接。