IIS上的PHP不会加载sqlsrv扩展名

时间:2017-03-31 22:08:09

标签: php sql-server iis sqlsrv

我试图整理一个可以通过PHP将表单中的数据提交到MSSQL数据库的页面。我已成功安装PHP(phpinfo()即使在远程计算机上运行正常)但它不会加载sqlsrv extension。我知道我正在编辑正确的php.ini文件,因为我添加了另一个扩展程序(wincache)并且加载正常,同时使用phpinfo()get_loaded_extensions()确认。

日志没有告诉我任何事情。 IIS上的PHP管理器告诉我sqlsrv扩展文件已启用。我重新启动了网站,服务器和计算机,但没有任何工作。

我在Windows 7 Ultimate计算机上使用PHP 7.1.1。它以x64模式运行,非线程安全。我确保我启用的扩展文件是x64,非线程安全的。我不知道还有什么要检查,或者我需要提供更多信息。

编辑:我按this page建议php-cgi.exe运行了,它出现了错误信息:

[31-Mar-2017 22:38:12 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\Program Files\iis express\PHP\v7.1\ext\php_sqlsrv_7_nts_x64.dll' - The specified procedure could not be found.
 in Unknown on line 0
[31-Mar-2017 22:38:17 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\Program Files\iis express\PHP\v7.1\ext\php_pdo_sqlsrv_7_nts_x64.dll' - The specified procedure could not be found.
 in Unknown on line 0

这是否意味着问题出在扩展DLL本身?我怎么能解决这个问题?

编辑2: ImClarky解决了这个问题,因为我显然使用了一种过时的扩展版本。我已经开始工作了,但现在我的身份验证失败的原因我不明白:

function connect_sql() {
    /* Specify server and connection attributes */
    $serverName = "(local)";

    /* Get UID and PWD from app-specific files */
    $uid = file_get_contents("C:\AppData\uid.txt");
    $pwd = file_get_contents("C:\AppData\pwd.txt");
    $connectionInfo = array("UID" => $uid,
                            "PWD" => $pwd,
                            "Database" => "database_name");

    /* Connect using SQL Server Auth */
    $conn = sqlsrv_connect($serverName, $connectionInfo);
    if ($conn === false)
    {
        echo "Unable to connect.</br>";
        //die(print_r(sqlsrv_errors(), true));
        die(print_errors());
    }
    else {
        echo "Connection Successful";
    }

    /* Free connection resources */
    sqlsrv_close($conn);
}

我已经仔细检查过我使用了正确的用户名和密码,我甚至进入并使用我尝试的确切UID和密码创建了一个全新的登录信息。我每次都会收到以下错误消息:

Unable to connect.

SQLSTATE: 28000
code: 18456
message: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Login failed for user 'username'.

SQLSTATE: 28000
code: 18456
message: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Login failed for user 'username'.

1 个答案:

答案 0 :(得分:0)

确保为php.ini

使用的扩展文件夹添加.dll文件

还选择了正确的SQLSRv驱动程序与您运行的PHP匹配

SQLSRv sqlsrv from official microsoft page