Połączenie z MSSQL przez IIS

0

Cześć,
nie będę ukrywał, że dopiero się uczę i chciałbym się skonsultować.
Na internecie spotkałem wiele "poradników" lecz albo jest to nie zrozumiałem albo coś ze mną jest nie tak.
Za pomocą IIS zainstalowałem PHP w wersji 8.0.0, stworzyłem plik testowy z phpinfo i działa, poniewaz pokazuje mi specyfikację.
Problem jest w momencie połączenia z bazą, bo gdy wypisuje wszystkie dane (nazwa serwera\instancja, baza danych, użytkownik i hasło) do index.php to dostaję komunikat: "Ta strona nie działa, serwer localhost nie może teraz obsłużyć tego żądania".
Dodam tylko tyle, że w IIS wrzuciłem to sobie na port 88 a w bazie danych loguję się za pomocą SQL Server Authentication.

Dane:

<?php
$serverName = "DOM\DOM_TEST"; //serverName\instanceName
$connectionInfo = array( "Database"=>"apkDOM_test", "UID"=>"sa", "PWD"=>"1234");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn ) {
     echo "Connection established.<br />";
}else{
     echo "Connection could not be established.<br />";
     die( print_r( sqlsrv_errors(), true));
}
?>
0
MiniBus02 napisał(a):

dostaję komunikat: "Ta strona nie działa, serwer localhost nie może teraz obsłużyć tego żądania".

To znaczy że w logach IIS masz informację.
Wróżki maja wiele ważniejsze zajęcia i nie pomogą.

ps. wybrałeś IIS albowiem ponieważ ?

0

Ponieważ tak chciałem.
Dlaczego to forum cechuje się tak aroganckimi osobami jak Ty?
Piszę, że nie mam o tym zbytnio pojęcia i się uczę to wyjeżdżasz z jakąś wróżką.

2
MiniBus02 napisał(a):

Cześć,
nie będę ukrywał, że dopiero się uczę i chciałbym się skonsultować.
Na internecie spotkałem wiele "poradników" lecz albo jest to nie zrozumiałem albo coś ze mną jest nie tak.
Za pomocą IIS zainstalowałem PHP w wersji 8.0.0, stworzyłem plik testowy z phpinfo i działa, poniewaz pokazuje mi specyfikację.
Problem jest w momencie połączenia z bazą, bo gdy wypisuje wszystkie dane (nazwa serwera\instancja, baza danych, użytkownik i hasło) do index.php to dostaję komunikat: "Ta strona nie działa, serwer localhost nie może teraz obsłużyć tego żądania".

Nie dostajesz takiego komunikatu. To klient (Twoja przeglądarka) pokazuje Ci taki tekst, w odpowiedzi na to, że serwer wysłał status code 500, możesz go nawet zobaczyć na swoim screenie który dołączyłeś.

Aplikacje najczęściej zwracają kod 500, kiedy w aplikacji serwera pojawił się nieobsłużony wyjątek. Nie wiem jak serwujesz aplikacje, czy wbudowanym serverem PHP, czy Apache czy Nginx; ale powinieneś otworzyć logi servera i przeczytać to tam jest.

Z drobniejszych rzeczy:

  • Zainteresuj się formatowaniem kodu
  • Nie używaj już przestarzałej składni array()
  • Nie używaj die()
  • Od PHP 7.4 nie zaleca się dodawanie zamykającego ?>, jeśli nie jest to wymagane.
  • Nie renderuj HTML'a z PHP, chyba że umiesz poprawnie oddzielić logikę od widoku.
<?php
$conn = sqlsrv_connect('DOM\DOM_TEST', ['Database' => 'apkDOM_test', 'UID' => 'sa', 'PWD' => '1234']);

if ($conn) {
   echo "Connection established.";
} else {
   echo "Connection could not be established.";
   print_r(sqlsrv_errors());
}
0

Okej, dziękuję za wskazówki i podpowiedzi.
Dzisiaj zobaczę w wolnej chwili, jak wygląda to z logami.

0

Zainstalowałem xamppa i dostałem taki błąd:

Fatal error: Uncaught Error: Call to undefined function sqlsrv_connect() in C:\xampp7.3.25\htdocs\KH\index.php:3 
Stack trace: #0 {main} thrown in C:\xampp7.3.25\htdocs\KH\index.php on line 3

Czy czegoś brakuje?

1
MiniBus02 napisał(a):

Zainstalowałem xamppa i dostałem taki błąd:

Fatal error: Uncaught Error: Call to undefined function sqlsrv_connect() in C:\xampp7.3.25\htdocs\KH\index.php:3 
Stack trace: #0 {main} thrown in C:\xampp7.3.25\htdocs\KH\index.php on line 3

Czy czegoś brakuje?

Krok 1. Znajdź sqlsrv_connect w dokumentacji PHP: https://www.php.net/manual/en/function.sqlsrv-connect.php
Krok 2. Zobacz gdzie znajduje się ta funkcja: Database Extensions > Vendor Specific Database Extensions > SQLSRV > SQLSRV Functions
Krok 3. Otwierasz dokumentację SQLSRV: https://www.php.net/manual/en/book.sqlsrv.php
Krok 4. Znajdujesz rozdział "Installation": https://www.php.net/manual/en/sqlsrv.installation.php
Krok 5. Czytasz pierwsze zdanie w dokumentacji

The SQLSRV extension is enabled by adding appropriate DLL file to your PHP extension directory and the corresponding entry to the php.ini file.

0

Odinstalowałem PHP z IIS oraz xamppa.
Czy mógłbyś mi powiedzieć krok po kroku jak powinienem przejść instalację do w miarę najnowszych wersji?
Bardzo dużo czasu mi to zajmuje a nie powinno :(

0
MiniBus02 napisał(a):

Odinstalowałem PHP z IIS oraz xamppa.
Czy mógłbyś mi powiedzieć krok po kroku jak powinienem przejść instalację do w miarę najnowszych wersji?
Bardzo dużo czasu mi to zajmuje a nie powinno :(

Znów IIS ? A po co, będziesz w tym kompletnie sam.
Coś tam bywam koło wdrożeń IIS, i PHP nie widziałem nigdy

Są pewne oficjalne ściągi jak integrować całego Apache z IIS ...

0

To na czym najlepiej to zrobić?

1
MiniBus02 napisał(a):

To na czym najlepiej to zrobić?

Nie słuchaj, mozesz sobie użyć normalnie - tylko musisz po prostu normalnie włączyć extension; bo widzę że masz z tym problem.

2
ZrobieDobrze napisał(a):
MiniBus02 napisał(a):

dostaję komunikat: "Ta strona nie działa, serwer localhost nie może teraz obsłużyć tego żądania".

To znaczy że w logach IIS masz informację.
Wróżki maja wiele ważniejsze zajęcia i nie pomogą.

ps. wybrałeś IIS albowiem ponieważ ?
Oj mało widziałeś.

Pierwsze co to musisz zainstalować w PHP rozszerzenie do obsługi MSSQL. Wejdź na GitHub projektu sterownika od MS
https://github.com/Microsoft/msphpsql/releases
i pobierz paczkę z plikami. Jak masz PHP 8 pobierasz Win8.zip. Tak dziwnie nazwali, ale cyferki to wersje PHP a nie systemu Windows.
Potem po rozpakowaniu będziesz miał dwa katologi. Zapewne masz PHP w wersji x64 a PHP w wersji NTS. W katalogu będziesz miał jeszczw pliki z TS w nazwie. Oba pliki z tego katalogu z NTS w nazwie przekopiuj do katalogu z rozszerzeniami PHP. Jak instalowałeś przez IIS to pewnie jakiś ProgramFiles/PHP8X/ ale to sprawdzisz pewnie przy użyciu phpinfo() Dalej musisz w PHP.ini dodać linijki z nazwami rozszerzeń. Dodaj oba rozszerzenia. Staraj się od razu uczyć PDO. Kiedyś nawet instalator w IIS miał opcję dodania sterowników bazy, ale jak się to wklikwało to już nie pamiętam.

Edit: znalazłem nawet jakiś przewodnik pokazujący proces z użyciem graficznego interfejsu:
https://www.itnota.com/install-php-windows-web-platform-installer/

0

Zrobiłem wszystko tak jak napisałeś i w cmd sobie sprawdziłem php (gdzieś znalazłem na necie).
Wyskoczył mi błąd:

PHP Warning:  PHP Startup: Unable to load dynamic library 'php_gd2.dll' (tried: C:\Program Files\PHP\v8.0\ext\php_gd2.dll 
(The specified module could not be found), C:\Program Files\PHP\v8.0\ext\php_php_gd2.dll.dll (The specified module could not be found)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'php_xmlrpc.dll' (tried: C:\Program Files\PHP\v8.0\ext\php_xmlrpc.dll 
(The specified module could not be found), C:\Program Files\PHP\v8.0\ext\php_php_xmlrpc.dll.dll (The specified module could not be found)) in Unknown on line 0
PHP 8.0.0 (cli) (built: Nov 24 2020 22:02:58) ( NTS Visual C++ 2019 x64 )

Skąd mógłbym pobrać oba pliki .dll?

2
MiniBus02 napisał(a):

Zrobiłem wszystko tak jak napisałeś i w cmd sobie sprawdziłem php (gdzieś znalazłem na necie).
Wyskoczył mi błąd:

PHP Warning:  PHP Startup: Unable to load dynamic library 'php_gd2.dll' (tried: C:\Program Files\PHP\v8.0\ext\php_gd2.dll 
(The specified module could not be found), C:\Program Files\PHP\v8.0\ext\php_php_gd2.dll.dll (The specified module could not be found)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'php_xmlrpc.dll' (tried: C:\Program Files\PHP\v8.0\ext\php_xmlrpc.dll 
(The specified module could not be found), C:\Program Files\PHP\v8.0\ext\php_php_xmlrpc.dll.dll (The specified module could not be found)) in Unknown on line 0
PHP 8.0.0 (cli) (built: Nov 24 2020 22:02:58) ( NTS Visual C++ 2019 x64 )

Skąd mógłbym pobrać oba pliki .dll?

One są dołączane z PHP! Musisz tylko edytować plik php.ini i je odkomentować.

Uruchom

php --ini

Znajdź miejsce z deklaracją dodatkó i odkomentuj gd2, usuwając średnik ; z tej linii.

;extension=bz2
extension=curl
;extension=ffi
;extension=ftp
extension=fileinfo
extension=gd2
;extension=gettext
;extension=gmp
;extension=intl
;extension=imap
;extension=ldap
extension=mbstring
;extension=exif      ; Must be after mbstring as it depends on it
;extension=mysqli
;extension=oci8_12c  ; Use with Oracle Database 12c Instant Client
;extension=odbc
extension=openssl
;extension=pdo_firebird

Pamiętaj, że jeśli jesteś na Windowsie, to musisz też znaleźć

; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
;extension_dir = "./"
; On windows:
extension_dir = "ext"

i odkomentować odpowiedni extension_dir.

0

Dokładnie tak zrobiłem ale boję się, że przy odinstalowaniu coś narobiłem -.-

0

Wydaje się, że brakuje mi tych dwóch plików w folderze ext.

1
MiniBus02 napisał(a):

Wydaje się, że brakuje mi tych dwóch plików w folderze ext.

A masz je w swoim folderze ext/? Na 99% powinny tam być, jeśli to jest nowo ściągnieta wersja PHP.

Stąd ściągnąłeś PHP, tak? https://windows.php.net/download#php-8.1

0

Z Microsoft Web Platform Installer do IIS.
Teoretycznie wygląda to teraz tak, że phpinfo działa, moje połączenie z bazą nie działa (pokazuje się pusta strona) a w cmd jest komunikat jak wyżej.

1
MiniBus02 napisał(a):

Z Microsoft Web Platform Installer do IIS

Jeśli instalujesz PHP nie z orginanej dystrybucji, to możliwe żę dostawca usunął wyłączone dodatki.

Jest jakiś konkretny powoód czemu używasz tej wersji PHP; a nie tej z https://windows.php.net/download#php-8.1 ?

0

W zasadzie to nie ma, wyczytałem, że można to na IIS zrobić więc stwierdziłem, że jest to legitne źródło, zaraz się poprawiam.

1
MiniBus02 napisał(a):

W zasadzie to nie ma, wyczytałem, że można to na IIS zrobić więc stwierdziłem, że jest to legitne źródło, zaraz się poprawiam.

Sprawdź swój folder ext/ i zobacz czy tam są potrzebne DLL'ki. Jeśli nie, to ściągnij PHP ze strony PHP.

1

Web Platform installer często instaluje 2 lub wiecej wersji PHP. Możesz mieć innego PHPa w zmiennych środowiskowych(z ktorgo korzysta CMD domyślnie), a innego dla IIS. Sprawdzaj w phpinfo() przez przeglądarkę. Zwróć uwagę na wersję PHPa, lokalizację pliku php.ini oraz lokalizację ścieżki do rozszerzeń.

1

Rozwiązałem problem.
Problemem był dublujący się PHP, jakkolwiek to brzmi.
Pomogło zainstalowanie PHP z linku, który podał @TomRiddle, któremu bardzo dziękuję za pomoc.
Dodatkowo, w skrócie tak jak również @jurek1980 opisał należy dodać dwa rozszerzenia do katalogu ext, dodać to w rozszerzeniach php.ini i problem rozwiązany.

1 użytkowników online, w tym zalogowanych: 0, gości: 1