加载SQL DLL PHP 5.6.32时出现问题

加载SQL DLL PHP 5.6.32时出现问题,php,sql-server,azure,dll,azure-sql-database,Php,Sql Server,Azure,Dll,Azure Sql Database,我一直试图在PHP脚本和Microsoft Azure SQL数据库之间建立连接,但一直遇到同样的问题。我试过Xampp版本7.1.11/PHP7.1.11、7.0.25/PHP7.0.25,现在我使用的是5.6.32/PHP5.6.32 我已安装并正在使用版本5.6.32的SQLSRV32.EXE,该版本已添加到C:\xampp\php\ext文件夹中 当我编辑php.ini文件以添加extension=php_sqlsrv_56_nts.dll在php错误日志文件中保存并重新启动apache

我一直试图在PHP脚本和Microsoft Azure SQL数据库之间建立连接,但一直遇到同样的问题。我试过
Xampp版本7.1.11/PHP7.1.11、7.0.25/PHP7.0.25
,现在我使用的是5.6.32/PHP5.6.32

我已安装并正在使用版本5.6.32的
SQLSRV32.EXE
,该版本已添加到
C:\xampp\php\ext
文件夹中

当我编辑
php.ini
文件以添加
extension=php_sqlsrv_56_nts.dll
在php错误日志文件中保存并重新启动apache时,我不断得到错误

PHP警告:PHP启动:无法加载动态库“C:\xampp\PHP\ext\PHP\u sqlsrv\u 56\u nts.dll”-找不到指定的模块。在第0行的未知中


我尝试过的每个版本的XAMPP都做到了这一点。有人能帮我想一想或帮我一把吗?我如何绕过这个问题,并使用PHP完成与Azure SQL数据库的SQL连接?

首先,打开一个
phpinfo()
并搜索行线程安全。如果它说已启用,那么您应该使用线程安全DLL


首先,打开一个
phpinfo()
并搜索线程安全性行。如果它说已启用,那么您应该使用线程安全DLL


经过进一步的修补和研究,我终于解决了上面提到的问题。不幸的是,通用的google搜索提供了这个功能,它只包含PHP版本7.0.XX之前的驱动程序。对于
PHPversion7.1.12
我使用了这里找到的
线程安全1
PHP\u sqlsrv\u 71\u ts\u x64.dll
。我不知道为什么我又花了三天才找到这个

到Azure SQL数据库的连接现在可以工作了,下面介绍了这些步骤
1.从Microsoft获取正确的SQL驱动程序
-如果您使用的是PHP 7.0版或更早版本,则可以找到驱动程序
-如果您使用的是PHP 7.1版,则可以找到驱动程序
2.安装
3.将所需的
.dll
安装到
php\ext
文件夹中<代码>例如C:\php\ext
4.编辑
php.ini
文件,并确保
扩展名\u dir=
指向放置下载的
.dll
(驱动程序)的
C:\php\ext
文件夹
5.将
extension=required.dll name
添加到php.ini文件的第890行。在我的例子中,这是
extension=php\u sqlsrv\u 71\u ts\u x64.dll

6.保存
php.ini
并重新启动
Apache

我用来测试连接的PHP脚本如下:
sqltest.PHP

    $connectionInfo = array("UID" => "USERNAME", "pwd" => "PASSWORD", "Database" => "DBNAME", "LoginTimeout" => 30, "Encrypt" => 1, "TrustServerCertificate" => 0);
    $serverName = "SERVERNAME";
    $conn = sqlsrv_connect($serverName, $connectionInfo);

    if (sqlsrv_errors($conn)) {
        die('Failed to connect to Azure SQL: '.sqlsrv_errors());
    } else {
        echo "Connection to Microsoft Azure SQL Server has succeeded! <br /><br />";
    }

    $tsql = "SELECT * FROM [Users];";
    $getResults = sqlsrv_query($conn, $tsql);
    echo ("Reading data from table <br />" . PHP_EOL);

    if ($getResults == FALSE)
        echo(sqlsrv_errors());
    while ($row = sqlsrv_fetch_array($getResults, SQLSRV_FETCH_ASSOC)) {
        echo ($row['Id'] . " " . $row['Name'] . " " . $row['Username'] . " " . $row['Password'] . "<br /> " . PHP_EOL);
    }
    sqlsrv_free_stmt($getResults);
    ?>
$connectionInfo=array(“UID”=>“用户名”,“pwd”=>“密码”,“数据库”=>“DBNAME”,“LoginTimeout”=>30,“加密”=>1,“TrustServerCertificate”=>0);
$serverName=“serverName”;
$conn=sqlsrv_connect($serverName,$connectionInfo);
if(sqlsrv_错误($conn)){
die('未能连接到Azure SQL:'.sqlsrv_errors());
}否则{
echo“与Microsoft Azure SQL Server的连接已成功!

”; } $tsql=“从[用户]中选择*;”; $getResults=sqlsrv_查询($conn,$tsql); echo(“从表中读取数据
”.PHP\u EOL); 如果($getResults==FALSE) echo(sqlsrv_errors()); 而($row=sqlsrv\u fetch\u数组($getResults,sqlsrv\u fetch\u ASSOC)){ echo($row['Id'].“”.$row['Name'.“”.$row['Username'..”.$row['Password'.“
.PHP_EOL); } sqlsrv_free_stmt($getResults); ?>
更多信息由Microsoft提供


再次感谢上面所有人的宝贵意见

经过进一步的修补和研究,我终于解决了上面提到的问题。不幸的是,通用的google搜索提供了这个功能,它只包含PHP版本7.0.XX之前的驱动程序。对于
PHPversion7.1.12
我使用了这里找到的
线程安全1
PHP\u sqlsrv\u 71\u ts\u x64.dll
。我不知道为什么我又花了三天才找到这个

到Azure SQL数据库的连接现在可以工作了,下面介绍了这些步骤
1.从Microsoft获取正确的SQL驱动程序
-如果您使用的是PHP 7.0版或更早版本,则可以找到驱动程序
-如果您使用的是PHP 7.1版,则可以找到驱动程序
2.安装
3.将所需的
.dll
安装到
php\ext
文件夹中<代码>例如C:\php\ext
4.编辑
php.ini
文件,并确保
扩展名\u dir=
指向放置下载的
.dll
(驱动程序)的
C:\php\ext
文件夹
5.将
extension=required.dll name
添加到php.ini文件的第890行。在我的例子中,这是
extension=php\u sqlsrv\u 71\u ts\u x64.dll

6.保存
php.ini
并重新启动
Apache

我用来测试连接的PHP脚本如下:
sqltest.PHP

    $connectionInfo = array("UID" => "USERNAME", "pwd" => "PASSWORD", "Database" => "DBNAME", "LoginTimeout" => 30, "Encrypt" => 1, "TrustServerCertificate" => 0);
    $serverName = "SERVERNAME";
    $conn = sqlsrv_connect($serverName, $connectionInfo);

    if (sqlsrv_errors($conn)) {
        die('Failed to connect to Azure SQL: '.sqlsrv_errors());
    } else {
        echo "Connection to Microsoft Azure SQL Server has succeeded! <br /><br />";
    }

    $tsql = "SELECT * FROM [Users];";
    $getResults = sqlsrv_query($conn, $tsql);
    echo ("Reading data from table <br />" . PHP_EOL);

    if ($getResults == FALSE)
        echo(sqlsrv_errors());
    while ($row = sqlsrv_fetch_array($getResults, SQLSRV_FETCH_ASSOC)) {
        echo ($row['Id'] . " " . $row['Name'] . " " . $row['Username'] . " " . $row['Password'] . "<br /> " . PHP_EOL);
    }
    sqlsrv_free_stmt($getResults);
    ?>
$connectionInfo=array(“UID”=>“用户名”,“pwd”=>“密码”,“数据库”=>“DBNAME”,“LoginTimeout”=>30,“加密”=>1,“TrustServerCertificate”=>0);
$serverName=“serverName”;
$conn=sqlsrv_connect($serverName,$connectionInfo);
if(sqlsrv_错误($conn)){
die('未能连接到Azure SQL:'.sqlsrv_errors());
}否则{
echo“与Microsoft Azure SQL Server的连接已成功!

”; } $tsql=“从[用户]中选择*;”; $getResults=sqlsrv_查询($conn,$tsql); echo(“从表中读取数据
”.PHP\u EOL); 如果($getResults==FALSE) echo(sqlsrv_errors()); 而($row=sqlsrv\u fetch\u数组($getResults,sqlsrv\u fetch\u ASSOC)){ echo($row['Id'].''.$row['Name'.'.$row['Username'..'.$row['Password'.'').“
.PHP\u EOL