Не удается подключиться к MSSQL с помощью PHP на IIS
Я ищу решение уже 2 дня. Я получаю следующий эффект:
array(2) {
[0] => array(6) {
[0] => string(5) "IMSSP"
["SQLSTATE"] => string(5) "IMSSP"
[1] => int(-49)
["code"] => int(-49)
[2] => string(390) "This extension requires either the Microsoft SQL Server 2008 Native Client (SP1 or later) or the Microsoft SQL Server 2008 R2 Native Client ODBC Driver to communicate with SQL Server. Neither of those ODBC Drivers are currently installed. Access the following URL to download the Microsoft SQL Server 2008 R2 Native Client ODBC driver for x86: http://go.microsoft.com/fwlink/?LinkId=163712"
["message"] => string(390) "This extension requires either the Microsoft SQL Server 2008 Native Client (SP1 or later) or the Microsoft SQL Server 2008 R2 Native Client ODBC Driver to communicate with SQL Server. Neither of those ODBC Drivers are currently installed. Access the following URL to download the Microsoft SQL Server 2008 R2 Native Client ODBC driver for x86: http://go.microsoft.com/fwlink/?LinkId=163712"
}
[1] => array(6) {
[0] => string(5) "IM002"
["SQLSTATE"] => string(5) "IM002"
[1] => int(0)
["code"] => int(0)
[2] => string(91) "[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified"
["message"] => string(91) "[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified"
}
}
Похоже, что нет "собственного клиента Microsoft SQL Server 2008 R2", но есть!
Я уже использовал ту же конфигурацию на моей локальной машине и тестовом сервере. Я получал ту же ошибку на локальном компьютере, когда не было установлено "собственного клиента Microsoft SQL Server 2008 R2". После установки проблема была решена.
К сожалению, здесь я не вижу никаких изменений.
Я пробовал разные драйверы PHP и sqlsrv, но это не имело никакого эффекта.
Я не могу много экспериментировать, потому что это живой сервер.
Как я могу заставить это работать? Это как-то связано с настройками ODBC панели управления? Там также установлен другой собственный клиент, но я не могу удалить его с этого живого сервера.
Как читать эту информацию? Драйвер php sqlsrv видит родной клиент вообще?
редактировать
Проблема в том, что я использую все в 32 бит. Родной драйвер также отображается на панели управления ODBC. Расширение Sqlsrv для PHP также работает, как показано в phpinfo.
Как это возможно, что расширение sqlsrv для PHP не "видит" этот собственный клиент?
Я бессилен, и теперь я настраиваю ВМ, где я установлю точно такую же конфигурацию, как на веб-сервере, и проведу более смелые эксперименты.
2 ответа
Установите 32 и 64-разрядные драйверы на сервере. 32-битная панель управления odbc находится в каталоге Windows\SysWow64 - не совсем очевидно, но это все. Убедитесь, что у вас есть драйверы для вашего исполняемого файла (PHP) - если он 32-битный, вам нужны 32-битные драйверы.
Кажется, у вас та же проблема, что и у меня на этой неделе
Я скачал Process Monitor и следовал инструкциям на этот пост
http://www.iislogs.com/articles/processmonitorw3wp/
Затем я увидел, что процесс w3wp.exe получает доступ к этому разделу реестра.
HKLM\Software\ODBC\ODBCINST.INI\ Собственный клиент SQL 10.0
Я открыл RegEdit и пошел к этому ключу.
Я щелкнул правой кнопкой мыши - > Разрешения и добавил сетевой сервис в список и дал ему разрешения на чтение.
Переработал пул приложений и теперь он работает!
Надеюсь, поможет.
Приветствия, Феде