php 7 не удалось инициализировать sqlsrv
Я весь день искал решение для библиотеки dll sqlsrv на потокобезопасном php 7 VC14 x64 и не нашел решения. Кто-нибудь решил эту проблему:
[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
3 answers
Sqlsrv еще не готов для PHP7, но это неправда, что он не был выпущен с 2012 года. Последний релиз выпущен в мае 2015 года. Сопровождающим является Microsoft, а версия для PHP7 запланирована на начало следующего года.
Https://github.com/Azure/msphpsql/issues/58
Обновление:
Драйвер доступен для PHP до версии 7.1 даже для Linux сегодня (март 2017).
Для дальнейшего использования (протестировано в Windows 7 с Xampp и PHP 7.0.13):
Загрузите и установите драйверы ODBC здесь: https://www.microsoft.com/en-US/download/details.aspx?id=36434
Загрузите библиотеку DLL здесь (можно найти как 7.0., так и 7.1.): https://github.com/Microsoft/msphpsql/releases
Откройте файл "php.ini" и найдите строку "extension_dir". Это подскажет вам, куда поместить Файлы DDL. Примечание: На Xampp это должно быть что-то вроде: "C:\xampp\php\ext"
- Поместите DLL-файлы, содержащиеся в Zip-архиве, в каталог расширения. Убедитесь, что выбрали правильную выберите правильную версию. Примечание : Сначала я пытался использовать версию x64, но это не сработало. Затем я заменил библиотеку DLL на версию x86, и она, наконец, заработала.
- Назад в вашем файле "php.ini" вам нужно добавить следующую строку: "расширение= php_pdo_sqlsrv_7_ts.dll". Примечание: Xampp использует безопасную для протектора версию.
- Обязательно перезапустите службу 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);
}
Для записи прямая ссылка на библиотеки sql server находится здесь
Является 32- и 64-разрядной версией как для ts, так и для nts