Мне не удается заставить 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 загружено. Надеюсь, это поможет кому-то другому.