繁体   English   中英

从 PHP 连接到 MSSQL Server

[英]Connecting to MSSQL Server from PHP

我遵循了https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql 上的指南-server-ver15https://docs.microsoft.com/en-us/sql/connect/php/installation-tutorial-linux-mac?view=sql-server-ver15和 PHP 正在寻找驱动程序/服务器,但现在我收到身份验证错误。

验证服务器配置为“SQL Server 和 Windows 身份验证模式”并允许远程连接到服务器。

为了得到这个错误,我相信这意味着代码至少正在连接并尝试与服务器进行身份验证(将服务器更改为一些无意义的服务器名称/位置会产生超时错误) - 相当肯定可以消除任何可能出现的问题在身份验证步骤之前。

不过,我收到如下错误...

PDOException: SQLSTATE[28000]: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]用户“用户名”登录失败。 在 /var/www/html/connect.php:10 堆栈跟踪:#0 /var/www/html/connect.php(10): PDO->__construct('sqlsrv:Server=S...', 'username ', 'password') #1 {main}root@containerIdGoesHere:/var/www/html

<?php

$user = 'username';
$pass = 'password';

try {
     $pdo = new PDO("sqlsrv:Server=SomeServer,1433;Database=SomeDb", $user, $pass);
     $pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(Exception $e) {
    echo 'See error log';
    $elog = fopen('errorlog.txt', 'w') or die("Couldn't open file");
    fwrite($elog, $e);
    fclose($elog);
}

注意:我已经从我的代码中删除了任何敏感信息……所以我使用的用户名和密码不是“用户名”和“密码”,也与问题无关。

我已经在我的生产环境中进行了这项工作:

    $db = "DatabaseName";
    $password = "Password";
    $server = "TheSQLServer";
    $user = "username";
    $link = new PDO(
        "sqlsrv:Server=" . $server . 
        ";Database=" . $db, 
        $user, 
        $password
    );  

    return $link;

我还必须手动进入数据库并允许先前创建的用户拥有适当的权限(DB->Security->Users),您也可以检查一下。 让我知道事情的后续。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM