PHP 7 не может инициализировать sqlsrv

Я искал весь день, чтобы найти решение для sqlsrv dll на php 7 VC14 x64 Thread Safe, и я не нашел решения. Кто-нибудь решил эту проблему:

[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

person Pierre-Luc Bolduc    schedule 04.10.2015    source источник


Ответы (3)


sqlsrv еще не готов для PHP7, но это неправда, он не выпускался с 2012 года. Последний выпуск выпущен в мае 2015 года. Сопровождающим является Microsoft, а версия для PHP7 запланирована на начало следующего года.

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

Обновление:

Драйвер доступен для PHP до версии 7.1 даже для Linux сегодня (март 2017 г.).

https://github.com/Microsoft/msphpsql

person kba    schedule 19.11.2015
comment
Этот ответ устарел? - person reformed; 14.03.2017
comment
Да, это так. Этому ответу два года. Сегодня вы можете использовать драйвер sqlsrv до версии PHP 7.1 (даже в Linux). - person kba; 14.03.2017

Для дальнейшего использования (проверено в Windows 7 с Xampp и PHP 7.0.13):

  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-архиве, в каталог вашего расширения. Убедитесь, что вы выбрали правильную версию. Примечание. Сначала я пытался использовать 64-разрядную версию, но это не сработало. Затем я заменил 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);
}
person Jonathan Parent Lévesque    schedule 02.02.2017

Для записи прямая ссылка на библиотеки sql-сервера находится здесь.

sqlsrvr для php 7

Является ли 32- и 64-битная версия как для ts, так и для nts

person magallanes    schedule 19.03.2016