首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与ENCRYPT=yes trustServerCertificate=true的Laravel连接

问与ENCRYPT=yes trustServerCertificate=true的Laravel连接
EN

Stack Overflow用户
提问于 2017-04-12 02:03:39
回答 1查看 5.6K关注 0票数 1

我得到了一个ubuntu容器,它运行php 5.5.9,laraverl 5.2,可以成功地连接到Server并获得结果。

我使用的码头图像是https://hub.docker.com/r/h2labs/laravel-mssql/

我遇到的问题是服务器使用加密,我找不到如何将以下参数传递给mssql的laravel连接字符串

代码语言:javascript
复制
ENCRYPT=yes;trustServerCertificate=true

我的Server连接字符串目前如下所示

代码语言:javascript
复制
DB_CONNECTION=sqlsrv
DB_HOST=sql.mydomain.com
DB_PORT=1433
DB_DATABASE=mydbname
DB_USERNAME=mysusername
DB_PASSWORD=mypass

我的laravel数据库配置如下

代码语言:javascript
复制
        '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' => '',
    ],

Server错误日志条目是

连接到此服务器需要加密,但客户端库不支持加密;连接已关闭。请升级您的客户库。客户: 103.31.114.56

EN

回答 1

Stack Overflow用户

发布于 2017-04-12 06:57:18

对这两个选项的支持都没有引入直到Laravel 5.4,特别是v5.4.11。

因此,您首先需要升级到laravel/framework:>=5.4.11,<5.5

然后,要配置应用程序,您需要修改config/database.php文件,如下所示:

代码语言:javascript
复制
// ...
'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连接。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43359009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档