php - 从PHP连接到MSSQL Server

标签 php sql-server docker sqlsrv

我已按照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]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/

相关文章:

php - PHP 7 中的多线程

c# - 如何使用文本命令检索输出参数

docker - 在gitlab-ci的docker executor中添加/etc/hosts

php - 通过 Composer 安装软件包后如何启动脚本?

php - SQL 中的 LIKE 不起作用

php - 迭代每一行并获取计数 php mysql

c# - 使用数据表和 SqlBulkCopy 获取将 bool 值写入 sql 的异常

sql - 在 SQL Server 中执行时捕获对象依赖关系

ruby - Docker Ruby Bundler未安装

docker - 如何自动停止docker容器?