首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sqlsrv_connect在php中工作良好,但在同一服务器上的laravel中却失败(AWS EC2实例)

问sqlsrv_connect在php中工作良好,但在同一服务器上的laravel中却失败(AWS EC2实例)
EN

Stack Overflow用户
提问于 2022-04-12 11:30:44
回答 1查看 133关注 0票数 -1

我试图连接MSSQL数据库,作为我在Laravel中的第二个数据库,在核心PHP文件中,它工作得很好,但是当我尝试在laravel中连接时,它会抛出一个错误。

代码语言:javascript
复制
Here is my .env
MSSQL_CONNECTION=sqlsrv
MSSQL_DATABASE_URL='/EC2AMAZ-61LPEGK\SQLEXPRESS'
MSSQL_HOST=XX.XX.X.XXX
MSSQL_PORT=1433
MSSQL_DATABASE="/dbcrm"
MSSQL_USERNAME="sauser"
MSSQL_PASSWORD='dbpassword123'
MSSQL_TRUSTSERVER='yes'
MSSQL_ENCRYPT=False
MSSQL_STRICT=false

and here is my laravel database config:
    'sqlsrv' => [
        'driver' => 'sqlsrv',
        'url' => env('MSSQL_DATABASE', '/EC2AMAZ-61LPEGK\SQLEXPRESS'),
        'host' => env('MSSQL_HOST', 'XX.XX.X.XXX'),
        'port' => env('MSSQL_HOSTDB_PORT', '1433'), //I had tried null
        'database' => env('MSSQL_DATABASE', '/dbcrm'), //tried without '/'
        'username' => env('MSSQL_USERNAME', 'sauser'),
        'password' => env('MSSQL_PASSWORD', 'dbpassword123'),
        'trust_server_certificate' => env('MSSQL_TRUSTSERVER', 'yes'), //tried 'no'
        'encrypt' => env('MSSQL_ENCRYPT', False), //tried true
        'charset' => 'utf8',
        'prefix' => '',
        'prefix_indexes' => true,
    ],

以下是PHP文件代码,它工作良好,连接数据库并执行查询,

代码语言:javascript
复制
$host ="XX.XX.X.XXX";
$username ="sauser";
$password ="dbpassword123";
$database ="dbcrm";
$params = [
"UID" => $username,
"PWD" => $password,
"Database" => $database,
"TrustServerCertificate" => "yes",
];
if(sqlsrv_connect($host, $params)) {
echo "connected..";
} else {
echo "Connection could not be established.<br />";
echo "<pre>";
die( print_r( sqlsrv_errors(), true));
echo "</pre>";
}

对于这两种情况,我都使用相同的服务器,并且已经安装/启用了SQLSRV。请查找phpinfo截图以供参考。

​

为什么它在PHP文件中工作,而不是在Laravel中工作。请帮帮忙。注意: MSSQL数据库安装在另一个AWS windows实例上,并启用TCP,端口号为1433。

这是我所犯的错误,

​

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-14 03:12:39

最后,能够找出问题,张贴同样的,这样它将帮助一个人谁已经打了几天,并拔出他们的头发,以找到解决办法。

  1. 将下面的.env变量和数据库配置更改如下:

MSSQL_ENCRYPT=yes

MSSQL_TRUSTSERVER=True

config/database.php

代码语言:javascript
复制
'trust_server_certificate' => env('MSSQL_TRUSTSERVER', true), //Some libraries accessing ODBC/JBDC require Yes/No settings, others True/False, 
'encrypt' => env('MSSQL_ENCRYPT', 'yes'), //same here try Yes/No or True/False
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71841849

复制
相关文章

相似问题

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