Мы запускаем приложение PHP 5.4 на Server 2008 R2. Мы хотели бы подключиться к базе данных SQL Server 2008 на отдельном сервере, используя проверку подлинности Windows (должна быть проверка подлинности Windows - администраторы БД не позволят нам подключиться каким-либо другим способом). Я скачал драйверы SQL Server для PHP и установил их. IIS настроен для проверки подлинности Windows, а анонимная проверка подлинности отключена. $ _SERVER ['AUTH_USER'] сообщает о нашем текущем входе в учетную запись Windows. В php.ini мы установили fastcgi.impersonate = 1.
Когда мы устанавливаем соединение, используя следующий код от Microsoft:
$serverName = "sqlserver\sqlserver";
$connectionInfo = array( "Database"=>"some_db");
/* Connect using Windows Authentication. */
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
echo "Unable to connect.</br>";
die( print_r( sqlsrv_errors(), true));
}
Мы получаем следующее сообщение об ошибке:
Unable to connect.
Array ( [0] => Array ( [0] => 28000 [SQLSTATE] => 28000 [1] => 18456 [code] => 18456 [2] => [Microsoft][SQL Server Native Client 11.0][SQL Server]Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. [message] => [Microsoft][SQL Server Native Client 11.0][SQL Server]Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. )
Можно ли подключиться к SQL Server 2008 через PHP с помощью проверки подлинности Windows? Есть ли какие-то дополнительные необходимые настройки, которые нам нужно сделать в IIS, SQL Server или любом другом компоненте (например, контроллере домена)?
Есть несколько способов скрыть это, но основная хитрость заключается в том, чтобы заставить PHP-процесс работать в правильном контексте.
Если вы уже работаете как NETWORK SERVICE, вы можете добавить учетную запись компьютера на сервер базы данных; имя пользователя DOMAIN \ COMPUTERNAME $.
Вы также можете настроить пул приложений для использования другого пользователя, если это будет проще.
Настройка PHP для олицетворения, вероятно, здесь не поможет, если только не требуется сквозная аутентификация пользователей в базе данных.