php 7 unable to initialize sqlsrv

2019-04-21 12:07发布

I searched all day to find out a solution for sqlsrv dll on php 7 VC14 x64 Thread Safe and i did not found a solution. Does anyone solved this issue :

[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

Here is my php7 RC4 informations :

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

3条回答
Explosion°爆炸
2楼-- · 2019-04-21 12:24

sqlsrv isn't ready for PHP7 yet but that's not true it wasn't released since 2012. Last release is from May 2015. Maintainer is Microsoft and version for PHP7 is planned on the beginning of next year.

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

Update:

Driver is available for PHP up to 7.1 version even for Linux today (March 2017).

https://github.com/Microsoft/msphpsql

查看更多
男人必须洒脱
3楼-- · 2019-04-21 12:45

For future reference (tested on Windows 7 with Xampp and PHP 7.0.13):

  1. Download and install ODBC drivers here: https://www.microsoft.com/en-US/download/details.aspx?id=36434

  2. Download the DLL here (both 7.0. and 7.1.can be found): https://github.com/Microsoft/msphpsql/releases

  3. Open your "php.ini" file and look for the "extension_dir" line. This will tell you where to put the DDL files. Note: On Xampp, it should be something like: "C:\xampp\php\ext"

enter image description here

  1. Put the DLL files contains in the Zip archive in your extension directory. Make sure to select the proper select the proper version. Note: I initially tried to use the x64 version, but it didn't work. Then, I replaced the DLL with the x86 version and it finally worked.

enter image description here

  1. Back in your "php.ini" file, you need to add the following line: "extension = php_pdo_sqlsrv_7_ts.dll". Note: Xampp use the tread safe version.

enter image description here

  1. Make sure to restart your apache service.

enter image description here

Code sample for testing:

$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);
}
查看更多
做个烂人
4楼-- · 2019-04-21 12:46

For the record, the direct link to the sql server libraries is here

sqlsrvr for php 7

Is the 32 and 64 bits version both for ts and nts

查看更多
登录 后发表回答