php 7无法初始化sqlsrv

Pie*_*duc 9 dll php-ini sqlsrv php-7

我整日搜索在php 7 VC14 x64线程安全上找到sqlsrv dll的解决方案,但我没有找到解决方案.有没有人解决了这个问题:

[04-Oct-2015 19:48:05 UTC] PHP Warning:  PHP Startup: pdo_sqlsrv: Unable to initialize module
Module compiled with module API=20131226
PHP    compiled with module API=20141001
These options need to match
 in Unknown on line 0
Run Code Online (Sandbox Code Playgroud)

这是我的php7 RC4信息:

System  Windows NT 6.0 build 6002 (Windows Server 2008 Standard Edition Service Pack 2) AMD64
Build Date  Sep 29 2015 17:15:28
Compiler    MSVC14 (Visual C++ 2015)
Architecture    x64
Run Code Online (Sandbox Code Playgroud)

kba*_*kba 13

sqlsrv还没有为PHP7做好准备,但事实并非如此,它自2012年以来一直没有发布.最新版本是从2015年5月开始.Maintainer是微软,PHP7的版本计划在明年年初开始.

https://github.com/Azure/msphpsql/issues/58

更新:

今天(2017年3月)即使对于Linux,驱动程序也可用于高达7.1版本的PHP.

https://github.com/Microsoft/msphpsql


Jon*_*que 8

供将来参考(在带有Xampp和PHP 7.0.13的Windows 7上测试):

  1. 在此处下载并安装ODBC驱动程序:https://www.microsoft.com/en-US/download/details.aspx?id = 36434

  2. 在这里下载DLL(7.0和7.1都可以找到):https://github.com/Microsoft/msphpsql/releases

  3. 打开" php.ini "文件,查找" extension_dir "行.这将告诉您放置DDL文件的位置.注意:在Xampp上,它应该是这样的:" C:\ xampp\php\ext "

在此输入图像描述

  1. 将DLL文件包含在您的扩展目录中的Zip存档中.确保选择正确的版本.注意:我最初尝试使用x64版本,但它不起作用.然后,我用x86版本替换了DLL,它终于奏效了.

在此输入图像描述

  1. 回到"php.ini"文件,您需要添加以下行:" extension = php_pdo_sqlsrv_7_ts.dll ".注意:Xampp使用胎面安全版本.

在此输入图像描述

  1. 确保重新启动Apache服务.

在此输入图像描述

用于测试的代码示例:

$db = "the name of your database"
$password = "password";
$server = "IP address or named pipe";
$user = "username"

try {

    $connection = new PDO(
        "sqlsrv:Server=" . $server . 
            ";Database=" . $db, 
        $password, 
        $user
    );

    $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

} catch (PDOException $exception) {

    var_dump($exception);
}
Run Code Online (Sandbox Code Playgroud)