我已按照https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15和https://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]Login failed for user 'username'. in /var/www/html/connect.php:10 Stack trace: #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);
}
注意:我已经从代码中删除了所有敏感信息...因此我使用的用户名和密码不是'username'和'password'且与问题无关。
最佳答案
我已经在我的生产环境上进行了此工作:
$db = "DatabaseName";
$password = "Password";
$server = "TheSQLServer";
$user = "username";
$link = new PDO(
"sqlsrv:Server=" . $server .
";Database=" . $db,
$user,
$password
);
return $link;
我还必须手动进入数据库,并允许先前创建的用户拥有适当的权限(DB-> Security-> Users),您也可以进行检查。让我知道事情的后续。
关于php - 从PHP连接到MSSQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59901023/