Назад | Перейти на главную страницу

PHP не загружает расширение sqlsrv

Мне не удается заставить PHP использовать Microsoft sqlsrv расширение на 64-битном сервере Windows 2012 R2 под управлением IIS и PHP 7.1.7. Когда я бегу phpinfo() Я не вижу, что расширение загружено. Полагаю, мне стоит искать sqlsrv в качестве имени расширения. Также в журнале ошибок PHP нет ошибок при загрузке расширения.

Я загрузил версию 4.3 драйверов Microsoft, в которой указано, что они совместимы с PHP 7.1. Я скопировал файлы dll в PHP\v7.1\ext каталог. Я добавил следующие строки в файл php.ini.

extension=php_sqlsrv_7_nts_x64.dll
extension=php_pdo_sqlsrv_7_nts_x64.dll

Я убедился, что мой файл php.ini читается путем намеренного неправильного написания одного из имен dll и просмотра соответствующей ошибки в журнале php.

Установлен собственный клиент SQL Server 10 и 11.

Я переработал пул приложений, перезапустил службу W3SVC и перезапустил сервер.

Я надеюсь, что кто-то здесь может предложить еще кое-что, чтобы попробовать.

Первая проблема, которую я еще не решил, - мой журнал ошибок php не показывает проблем с загрузкой расширений, если я не изменю имя файла журнала. После изменения имени файла журнала я получил следующую ошибку:

Предупреждение PHP: Запуск PHP: невозможно загрузить динамическую библиотеку 'C: \ Program Files \ PHP \ v7.1 \ ext \ php_pdo_sqlsrv_7_nts_x64.dll' - указанная процедура не может быть найдена.

Как оказалось, мне нужно было использовать драйвер, специфичный для PHP 7.1. Я не уверен, почему, судя по исходной загрузке, не было драйверов 7.1. Возможно, в первый раз я по ошибке загрузил драйвер sqlsrv 4.0. Я пошел и загрузил драйвер sqlsrv 4.3 здесь:

https://www.microsoft.com/en-us/download/details.aspx?id=55642

Я добавил в свой php.ini следующее

extension = php_sqlsrv_71_nts_x64.dll
extension = php_pdo_sqlsrv_71_nts_x64.dl

Расширение sqlsrv загружено. Надеюсь, это поможет кому-то другому.