T&R splet blog o spletnih storitvah. Razgaljamo tehnologijo!

reference spletnih strani
17th June

Povezava preko IIS-ja s PHP-jem na strežnik MSSQL 2005 z uporabo Windows Authentication načina (MSSQL, PHP SQLSRV, Windows, IIS)

Zadnje čase se pri delu večkrat srečam s PHP ter MSSQL tehnologijo. Tako smo na TRSplet že pisali o povezovanju na MSSQL podatkovno bazo preko PHP-ja na Linux strežniku, prav tako o novi native SQL 2005 knjižnici za PHP. Mimogrede Microsoft je izdal novo verzijo PHP SQL knjižnice, ki podpira tako SQL 2005 ter SQL 2008 strežnik. Več o tem si lahko preberete na njihovem blogu. Pri zadnjem projektu pa sem se srečal kako se povezati iz Windows strežnika, kjer je nameščen IIS, ki poganja PHP 5.2.8, na MS SQL 2005 bazo z uporabo Windows Authentication načina.

Sliši se enostavno, PHP se poveže na MSSQL preko Windows Authentication načina tako, da ne defeniramo nobenega gesla ter uporabniškega imena. Primer uporabe:

PHP:
  1. $serverName = "(local)";
  2. $connectionInfo = array( "Database"=>"AdventureWorks"); // defeniramo le bazo, izpustimo uporabiško ime in geslo
  3.  
  4. // Inicializiramo povezavo
  5. $conn = sqlsrv_connect( $serverName, $connectionInfo);
  6. if( $conn === false )
  7. {
  8.      echo "Napaka pri povezavi.</br>";
  9.      die( print_r( sqlsrv_errors(), true));
  10. }
  11.  
  12. echo 'Deluje, JUHU!';

Zadeva vrne napako, zakaj? Problem nastane, da PHP ne teče pod uporabniškim imenom ampak ga IIS zaganja preko svojega interneta uporabniškega imena. To lahko potrdimo z uporabo preproste batch skripte:

PHP:
  1. SET "PHP=C:\Program Files\PHP\php.exe"
  2. SET "USER=username" // uporabniško ime pod katerim želimo, da teče PHP
  3. SET "PHP_FILE=C:\Inetpub\wwwroot\spletna_stran\index.php"
  4. RUNAS /user:%USER% "%PHP% -f %PHP_FILE% /savecred" // zaženemo php, windows nas pred dejanskim zagonom vpraša še za geslo

Skripta vrne 'Deluje, JUHU', torej je bila povezava na bazo uspešna. Vendar s tem še nismo rešili težave, saj smo s tem le dokazali, da PHP preko IIS ne teče pod windows uporabnikom ampak pod internim IIS uporabniškim imenom. Načinov kako to rešiti je več, od nastavitve appPool (NE DELUJE)
Shrani.si
do nastavitve IIS log-in (NE DELUJE)
Shrani.si
Pri meni je zadeva delovala le tako, če sem pod Authentication methods pri spletnem mestu (web sites zavihek v IIS) pod anonymous dostop defeniral Windows uporabniško ime ter geslo, ter še obkljukal Integrated Windows Authentication. Tukaj je potrebno paziti le, da vpisano uporabniško ime ne pripada admin grupi!
Shrani.si

Php.ini nastavitve:

PHP:
  1. mssql.secure_connection = On

Dodatne povezave:

Delodajalec: Creatim

Deli s skupnostjo:

  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks

Podobni članki:

  1. Povezava na MSSQL 2005 z uporabo PHP mssql knjižnice (MSSQL, PHP MSSQL, Windows, Apache)
  2. PHP – namestitev SQL Server 2005 knjižnice (SQLSRV extension)
  3. Pretvorba PHP MySQL aplikacije v PHP MS SQL aplikacijo (apache, php, mdb2, mysql => iis, php, mdb2, mssql)
  4. PHP – povezovanje na MSSQL bazo – Linux,Windows (odbc,mssql,iOdbc)
  5. Namestitev spletnega strežnika IIS – privzeti direktorij InetPub – konfiguracija
  6. WAMP – Windows – mail smtp strežnik – pošiljanje epošte
  7. HTML Mime Mail PHP – nastavljanje kodne tabele (charset – windows-1250 – UTF-8) – Outlook Express
  8. Hitri vnos/uvoz podatkov v MySQL preko LOAD DATA INFILE
  9. Windows – lokalni MySQL uvoz podatkovne baze – velika podatkovna baza – težave pri uvozu velikih MySQL baz
  10. Manipulacija slik s PHP-jem – cache slik – 304 Not Modified

Dodaj komentar