sqlsrv_connect 在 php 中工作正常,但在同一服务器(AWS EC2 实例)上的 laravel 中失败
sqlsrv_connect works fine in php but fails in laravel on the same server(AWS EC2 Instance)
我正在尝试连接 MSSQL 数据库作为我在 Laravel 中的第二个数据库,在核心 PHP 文件中它工作正常但是当我尝试在 laravel 中连接时它抛出一个错误。
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 文件代码,可以正常工作并连接数据库并执行查询,
$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>";
}
我在这两种情况下使用相同的服务器,并且我有 installed/enabled SQLSRV。请查找 phpinfo 屏幕截图以供参考。
为什么它在 PHP 文件中有效,但在 Laravel 中无效。请帮忙。
注意:MSSQL 数据库安装在另一个 AWS windows 实例上并且启用了 TCP,端口号为 1433
这是我得到的错误,
终于找到问题所在了,发帖出来,希望能帮助那些已经被打了好几天、抓狂的人找到解决办法。
更改以下 .env 变量和数据库配置,
MSSQL_ENCRYPT=是
MSSQL_TRUSTSERVER=真
config/database.php
'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
我正在尝试连接 MSSQL 数据库作为我在 Laravel 中的第二个数据库,在核心 PHP 文件中它工作正常但是当我尝试在 laravel 中连接时它抛出一个错误。
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 文件代码,可以正常工作并连接数据库并执行查询,
$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>";
}
我在这两种情况下使用相同的服务器,并且我有 installed/enabled SQLSRV。请查找 phpinfo 屏幕截图以供参考。
为什么它在 PHP 文件中有效,但在 Laravel 中无效。请帮忙。 注意:MSSQL 数据库安装在另一个 AWS windows 实例上并且启用了 TCP,端口号为 1433
这是我得到的错误,
终于找到问题所在了,发帖出来,希望能帮助那些已经被打了好几天、抓狂的人找到解决办法。
更改以下 .env 变量和数据库配置,
MSSQL_ENCRYPT=是
MSSQL_TRUSTSERVER=真
config/database.php
'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