【问题标题】:php 7 unable to initialize sqlsrvphp 7 无法初始化 sqlsrv
【发布时间】:2016-01-01 12:37:14
【问题描述】:

我一整天都在寻找 php 7 VC14 x64 Thread Safe 上的 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

【问题讨论】:

    标签: dll sqlsrv php-ini php-7


    【解决方案1】:

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

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

    更新:

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

    https://github.com/Microsoft/msphpsql

    【讨论】:

    • 这个答案过时了吗?
    • 是的。这个答案是两年前的。您现在可以使用最高 PHP 7.1 的 sqlsrv 驱动程序(甚至在 Linux 上)。
    【解决方案2】:

    供将来参考(在带有 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 版本,但没有成功。然后,我将 DLL 替换为 x86 版本,它终于可以工作了。

    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);
    }
    

    【讨论】:

      【解决方案3】:

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

      sqlsrvr for php 7

      ts 和 nts 都是 32 位和 64 位版本

      【讨论】:

        猜你喜欢
        • 2012-08-22
        • 2016-04-01
        • 1970-01-01
        • 2012-02-14
        • 1970-01-01
        • 2013-08-04
        • 1970-01-01
        • 2021-12-07
        • 2014-11-13
        相关资源
        最近更新 更多