2012-05-04 2 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 스크립트 인 홈페이지로 이동하여 연결을 연 다음 javacript가 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 ("Database"=> "dbname"); $ conn = sqlsrv_connect ($ serverName, $ connectionInfo); –

+0

왜 SQL 서버가 로컬 인 경우 로컬 대신 "sql-server-name, port"를 사용하고 있습니까? 내가 묻는 이유는 servername을 통해 서버에 연결했기 때문에 서버가 로컬 서버 임에도 불구하고 원격 연결을 사용 가능하게 설정해야 할 수도 있습니다. 반면에 로컬에서 연결하는 경우에는 그렇지 않을 수도 있습니다. –

+0

서버가 10.x.x.x 구성표에서 pingable이라고 생각하는 기본이 아닌 포트를 사용한다고 들었습니다. –

관련 문제