2012-05-04 21 views
2

私はPHPを初めて使い、かなり単純で厄介な問題にぶつかりました。IIS PHPはWindows認証を使用してMSSQLに接続します

  • Windowsドメイン環境
  • ユーザーはIIS7と
  • このボックスはに接続するPHPスクリプトを収容するPHPの最新 バージョンを実行しているローカルサーバー2008ボックスに接続します。ここでは

    が設定されローカルmssqlサーバー

ユーザーがhttp://iisservername/に移動し、phpスクリプトを使用してmssqlサーバーに接続しようとすると、ユーザーがNT AUTHORITY \ ANONYMOUS LOGONに失敗しました

runas/profile/user:domain \ user "c:\ program files \ internet explorer \ iexploreを使用するIISサーバーでcmdスクリプトを起動しました.exe "

私はcmdスクリプトで各ユーザーのrunas行を作成して実行します。

起動時に、ホームページに移動します。これは、私が作成したkeepalive.phpスクリプトで、接続を開き、javascriptがx分ごとにページを更新します。

確かにこれを行うにはより良い方法がありますか?

+0

? IISの組み込み認証を使用していますか、独自の認証を持っていますか? – Brad

+0

IISが内蔵されています。 –

+0

そのような場合、PHPはすでにログインしているユーザーを偽装しているはずです。この動作をどこかで変更するオプションがあります...私はそれがどこにあるか覚えていません。恐らくそれは無効になっていますか?とにかく、ここでの根本的な問題と思われるのは、単にSQL Serverへの接続方法だけです。この接続がどのように行われているかについてコードを表示できますか? – Brad

答えて

2

あなたはsqlsrv_connectを使用し、使用している場合は、IISの認証では、より多くの何もあなたのために扱われるべきで構築された:

/* Specify the server and connection string attributes. */ 
$serverName = "(local)"; 
$connectionInfo = array("Database"=>"AdventureWorks"); 
/* Connect using Windows Authentication. */ 
$conn = sqlsrv_connect($serverName, $connectionInfo); 

(例から:http://msdn.microsoft.com/en-us/library/cc296205%28v=sql.90%29.aspx)どのようにあなたの認証を行っている

+0

これは私が現在使っているものです: $ serverName = "sql-server-name、port"; $ connectionInfo = array( "データベース" => "dbname"); $ conn = sqlsrv_connect($ serverName、$ connectionInfo); –

+0

SQLサーバーがローカルの場合は、なぜローカルの代わりに "sql-server-name、port"を使用していますか?私が尋ねるのは、サーバーがローカルであるにもかかわらず、サーバー名で接続しているため、リモート接続を有効にする必要がありますが、ローカルから接続する場合はそうでない可能性があります。 –

+0

私は、デフォルト以外のポートを使用していると言われました。サーバが10.x.x.xスキームでping可能であると思っていました。 –

関連する問題