Strona 1 z 1

połączenie z serwera apache do bazy Microsoft SQL Server

: 23 sierpnia 2010, 20:57
autor: rakoo
Witam.
Przejdę od razu do sedna sprawy - moim zadaniem jest uruchomienie na Debianie serwera apache łączącego się do bazy danych Miscrosoft SQL Server 2000 na innym komputerze w sieci lokalnej.
Znalazłem temat:
http://debian.linux.pl/threads/9949-jak ... -pdo_mssql

Zainstalowałem według tej instrukcji:

Kod: Zaznacz cały

debian-source:~# php -i | grep MSSQL
debian-source:~#
debian-source:~# apt-get install freetds-common php5-sybase
debian-source:~# /etc/init.d/apache2 restart
debian-source:~# php -i | grep MSSQL
MSSQL Support => enabled
Niestety podczas połączenia:

Kod: Zaznacz cały

<?php
$dsn = "dblib:host=192.168.1.107;dbname=MojaBaza;";
$user = "username";
$pass = "password";

try {
$pdo = new PDO($dsn, $user, $pass);
}
catch (Exception $e){
echo $e -> getMessage()."\n";
die();
}

if (isset($pdo)) {
echo "DZIALA POPRAWNIE";
}
 
dostaję komunikat:

Kod: Zaznacz cały

SQLSTATE[HY000] Unable to connect: Adaptive Server is unavailable or does not exist (severity 9)
Komunikat występuje zarówno jak podaję dobry, jak i zły adres IP - na tą samą bazę łączę się poprzez PHP pod Windowsem z pdo_mssql i działa bez zarzutu.

Problem mało popularny, mam nadzieję, że znajdzie się na tyle obznajomiona osoba, aby mi coś doradzić.

Pozdrawiam.

: 24 sierpnia 2010, 08:22
autor: mariaczi
rakoo pisze: try {
$pdo = new PDO($dsn, $user, $pass);
}
catch (Exception $e){
echo $e -> getMessage()."\n";
die();
}
Cześć.
Sprawdziłem organoleptycznie ;) i działa.
Musisz mieć dokładnie tak:

Kod: Zaznacz cały

$pdo = new PDO("$dsn", "$user", "$pass");
Tobie brakuje cudzysłowów.
Pozdrawiam.

: 24 sierpnia 2010, 09:53
autor: rakoo
mariaczi pisze:Cześć.
Sprawdziłem organoleptycznie ;) i działa.
Musisz mieć dokładnie tak:

Kod: Zaznacz cały

$pdo = new PDO("$dsn", "$user", "$pass");
Tobie brakuje cudzysłowów.
Pozdrawiam.

Niestety dalej:

Kod: Zaznacz cały

[font=monospace]
[/font]SQLSTATE[HY000] Unable to connect: Adaptive Server is unavailable or does not exist (severity 9)[font=Tahoma][/font]
Spróbowałem i niestety nie podziałało, przypominam że ma się łączyć do bazy "Microsoft SQL Server 2000".
Wydaje mi się, że niestety trzeba też jakoś osobno konfigurować ten sterownik dblib, aby połączył się z bazą Microsoftu.

: 24 sierpnia 2010, 12:21
autor: mariaczi
Spróbuj dodać po ip serwera nazwę instancji. Ja wykonałem test podłączenia z apache2+php do MS SQL Server 2005 Express.
Czy z wiersza poleceń z innej stacji roboczej możesz podłączyć się do tego serwera\bazy?
Na maszynie z apache nie masz jakiegoś firewalla?

: 24 sierpnia 2010, 13:02
autor: rakoo
mariaczi pisze:Czy z wiersza poleceń z innej stacji roboczej możesz podłączyć się do tego serwera\bazy?
Na maszynie z apache nie masz jakiegoś firewalla?
Ping do serwera SQL leci prawidłowo.
Próbowałem się połączyć z serwerem SQL z innej maszyny i wszystko bezproblemowo.
To jest podstawowy Debian z doinstalowanymi z pomocą apt-get pakietami, o których pisałem wcześniej - wątpię żeby coś go blokowało.

Spróbuję zaraz jeszcze z tą nazwą instancji serwera SQL.

Edycja:

Kod: Zaznacz cały

$dsn = "dblib:host=192.168.1.106\ADMIN-0FE8E0824;dbname=MojaBaza;";
Teraz wyświetla wyjątek niezależnie od tego czy podaje prawdziwe, czy fałszywe namiary

Kod: Zaznacz cały

SQLSTATE[] (null) (severity 0)


Edycja2:

Uruchomiłem serwer SQL na całkiem innym komputerze, poza siecią lokalna i połączenie doszło do skutku, więc problem jako tako rozwiązany

Nowy problem:
Problem tkwi w tym, że nie chcą realizować się połączenia po IP w sieciach lokalnych (nie wiem czemu) - używam wirtualnej sieci VMware, ale to już nie jest problem tego forum.

Dziękuję za rady i pozdrawiam

: 24 sierpnia 2010, 13:45
autor: mariaczi
Na maszynie, na której testowałem są pakiety:

Kod: Zaznacz cały

ii  libapache2-mod-php5               5.2.6.dfsg.1-1+lenny9      server-side, HTML-embedded scripting language (Apache 2 module
ii  libphp-adodb                      5.05-1                     The ADOdb database abstraction layer for PHP
ii  php-net-ldap                      1:1.1.1-1                  a OO interface for searching and manipulating LDAP-entries
ii  php-pear                          5.2.6.dfsg.1-1+lenny9      PEAR - PHP Extension and Application Repository
ii  php5-cli                          5.2.6.dfsg.1-1+lenny9      command-line interpreter for the php5 scripting language
ii  php5-common                       5.2.6.dfsg.1-1+lenny9      Common files for packages built from the php5 source
ii  php5-gd                           5.2.6.dfsg.1-1+lenny9      GD module for php5
ii  php5-ldap                         5.2.6.dfsg.1-1+lenny9      LDAP module for php5
ii  php5-mcrypt                       5.2.6.dfsg.1-1+lenny9      MCrypt module for php5
ii  php5-mysql                        5.2.6.dfsg.1-1+lenny9      MySQL module for php5
ii  php5-snmp                         5.2.6.dfsg.1-1+lenny9      SNMP module for php5
ii  php5-sybase                       5.2.6.dfsg.1-1+lenny9      Sybase / MS SQL Server module for php5

ii  libphp-adodb                      5.05-1                     The ADOdb database abstraction layer for PHP
ii  libsybdb5                         0.82-4                     libraries for connecting to MS SQL and Sybase SQL servers
Sprawdź u siebie.

: 24 sierpnia 2010, 18:47
autor: Pacek
Można jeszcze spróbować zmenić sposób uwierzytelniania z Windows na Mixed Mode:
http://metrix.fcny.org/wiki/display/dev ... erver+2000
Wtedy można dla danej bazy danych założyć użytkownika MSSQL i nadać mu uprawnienia. Po tym można się podłączyć z PHP do serwera MSSQL przy użyciu polecenia mssql_connect. Niestety używałem tego na Apache z Windowsa więc nie mogę powierdzić funkcjonowania z Linuxa.
P.S. Ping to nie wszystko. Możliwe, że blokowany jest port MSSQL'a na Firewallu.

: 25 sierpnia 2010, 10:09
autor: rakoo
Wszystko ustawiłem poprawnie już wcześniej - problem tkwił w wersji ESXi (VMware), która źle realizowała połączenia wewnątrz sieci między wirtualnymi maszynami.
Po przeinstalowaniu całego serwera ESXi wszystko nagle zaczęło działać.

Dziękuje i pozdrawiam :)