9

我整天搜索以找到 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

这是我的 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
4

3 回答 3

13

sqlsrv 还没有为 PHP7 做好准备,但事实并非如此,它自 2012 年以来就没有发布。最后一个版本是 2015 年 5 月。维护者是微软,PHP7 的版本计划在明年年初。

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

更新:

即使在今天(2017 年 3 月)的 Linux 上,驱动程序也可用于最高 7.1 版本的 PHP。

https://github.com/Microsoft/msphpsql

于 2015-11-19T16:07:25.307 回答
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);
}
于 2017-02-02T19:41:27.647 回答
1

为了记录,到 sql server 库的直接链接在这里

用于 php 7 的 sqlsrvr

是 ts 和 nts 的 32 位和 64 位版本吗

于 2016-03-19T11:14:49.373 回答