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:
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:
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
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
