Следующая настройка: у меня есть Linux (Debian) машина в качестве веб-сервера (apache) и MS SQL Server в Windows. Кроме того, я не могу получить пользователя SQL для этого, только аутентификация через AD / Windows Auth.
Я использую Microsoft ODBC Driver и расширение sqlsrv, которое я установил, следуя инструкциям Microsoft.
Я успешно запускаю kinit
с основным именем и паролем.
Теперь подключение на основе Windows-Auth к серверу MSSQL прекрасно работает при использовании sqlcmd
или даже при использовании PHP в интерактивном режиме (php -a
) с использованием sqlsrv_connect, но когда я пытаюсь запустить простой пример подключения из php-файла через Apache , это не работает. Я получаю сообщение об ошибке, подобное этому:
Array ( [0] => Array ( [0] => HY000 [SQLSTATE] => HY000 [1] => 851968 [code] => 851968 [2] => [Microsoft][ODBC Driver 17 for SQL Server]SSPI Provider: No Kerberos credentials available (default cache: FILE:/tmp/krb5cc_33) [message] => [Microsoft][ODBC Driver 17 for SQL Server]SSPI Provider: No Kerberos credentials available (default cache: FILE:/tmp/krb5cc_33) ) [1] => Array ( [0] => HY000 [SQLSTATE] => HY000 [1] => 851968 [code] => 851968 [2] => [Microsoft][ODBC Driver 17 for SQL Server]Cannot generate SSPI context [message] => [Microsoft][ODBC Driver 17 for SQL Server]Cannot generate SSPI context ) )
Я знаю, что добавленный кеш _XX обозначает UID, поэтому подумал, что это может быть проблемой, которую я уже экспериментировал с другим пользователем, запрашивающим билет и еще много чего, но я не смог заставить его работать.
Я также пытался использовать unixODBC и определять DSN. Он работает при тестировании с isql
и с использованием odbc_connect
в интерактивном режиме php (также с python, использующим pyodbc), но не со страницы php.
У кого-нибудь есть идеи о том, что мне не хватает? Это может быть довольно очевидно, но я довольно новичок в этой теме, и не так уж много можно найти в отношении доступа с компьютера под управлением Linux к серверу MS SQL на базе Windows без дополнительного пользователя SQL. Заранее спасибо за помощь!