nai*_*lib 3 php sql-server ubuntu laravel windows-server-2012-r2
我在 Ubuntu 20.04 上使用 PHP Laravel 7.4,并尝试从位于另一个云上的 Windows 服务器中的 SQL 服务器获取数据。
这个方法在我的PC(Windows)上进行了测试,它成功地从Windows服务器获取了数据(如上所述),但是在我的ubuntu服务器上,我遵循文档ubuntu 20.04 PHP 7.4 https://learn.microsoft.com/en- us/sql/connect/php/installation-tutorial-linux-mac?view=sql-server-ver15
我收到这个错误:
SQLSTATE[08001]: [Microsoft][适用于 SQL Server 的 ODBC 驱动程序 17]TCP 提供程序: 错误代码 0x2746 (SQL: myquery) {"userId":94,"exception":"[object] (Illuminate\Database\QueryException(code : 08001): SQLSTATE[08001]: [Microsoft][适用于 SQL Server 的 ODBC 驱动程序 17]TCP 提供程序: 错误代码 0x2746 (SQL: myquery) 位于 /var/www/web-api/vendor/laravel/framework/src/Illuminate /数据库/连接.php:669)
我检查了 Microsoft SQL Server Management Studio 中的日志,发现每次从 Ubuntu 发出请求时都会出现此消息
“从远程客户端应用程序收到 TLS 1.2 连接请求,但服务器不支持客户端应用程序支持的密码套件。SSL 连接请求失败。”
尝试以下步骤:
安装 sqsrv 和 pdo_sqlsrv 扩展并重新启动 apache
更新并注释config/database.php sqlsrv 数组中提到的行
'端口' => env('DB_PORT', '1433'),
sqlsrv 驱动程序的最终值将如下所示:
'sqlsrv' => [
'driver' => 'sqlsrv',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', 'localhost'),
// 'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'prefix_indexes' => true,
],
Run Code Online (Sandbox Code Playgroud)
在项目目录的命令行中点击这2个命令
composer dump-autoload
php artisan config:clear
Run Code Online (Sandbox Code Playgroud)