Server 2008R2でPHP 5.4アプリケーションを実行しています。Windows認証(Windows認証である必要があります)を使用して、別のサーバー上のSQL Server2008データベースに接続します。 DB管理者は他の方法で接続できません)PHPのSQLServerドライバーをダウンロードしてインストールしました。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'. )
Windows認証を使用してPHP)経由でSQL Server 2008に接続することは可能ですか?IIS、SQL Server、またはその他のコンポーネント(ドメインコントローラーなど)で行う必要のある追加の必要な設定はありますか? ?
これをスキンするいくつかの方法ですが、基本的にコツはPHPプロセスを適切なコンテキストで実行することです。
すでにネットワークサービスとして実行している場合は、マシンアカウントをデータベースサーバーに追加できます。ユーザー名はDOMAIN\COMPUTERNAME $です。
簡単な場合は、別の名前のユーザーを使用するようにアプリケーションプールを構成することもできます。
PHPを偽装するように構成することは、ユーザーにデータベースに対するパススルー認証を要求しない限り、おそらくここでは役に立ちません。