Krzysztof Kania

Krzysztof Kania Inżynier systemowy
Cisco (CCNA R&S,
Voice, Security)

Temat: PHP, Linux, Apache i MS SQL

Hej,

Mam problem. Otóż potrzebuje się dostać do baz MS SQL z poziomu PHP zainstalowanego na linuksie (dokładnie to dystrybucja SuSE). Pobrałem, skonfigurowałem, skompilowałem, etc. pakiet FreeTDS. Niestety aby PHP go "zobaczyło" potrzeba przekompilować PHP. A ja nie chce ruszać PHP ani Apache bo to maszyna produkcyjna. Więc pytanie jest takie - jak, bez ruszania PHP i Apache, sprawić by PHP "rozumiało" polecenia mssql_connect czy mssql_fetch_row. Nie da się po prostu dodać biblioteki .so do php.ini?

Krzysztof
Jarosław Rafa

Jarosław Rafa senior software
engineer, Motorola
Solutions Systems
Polska

Temat: PHP, Linux, Apache i MS SQL

Krzysztof Kania:

Mam problem. Otóż potrzebuje się dostać do baz MS SQL z poziomu PHP zainstalowanego na linuksie (dokładnie to dystrybucja SuSE). Pobrałem, skonfigurowałem, skompilowałem, etc. pakiet FreeTDS. Niestety aby PHP go "zobaczyło" potrzeba przekompilować PHP. A ja nie chce ruszać PHP ani Apache bo to maszyna produkcyjna. Więc pytanie jest takie - jak, bez ruszania PHP i Apache, sprawić by PHP "rozumiało" polecenia mssql_connect czy mssql_fetch_row. Nie da się po prostu dodać biblioteki .so do php.ini?

Hm... o ile pamietam to ja właśnie tak zrobiłem - tyle że to było na Red Hacie, nie na SuSE. Ściągnąłem gotową paczkę z modułem php-mssql, FreeTDS-a, zainstalowałem (nic nie kompilowałem - ściągnąłem gotowe paczki). Po restarcie Apache'a PHP zobaczyło rozszerzenie mssql.
Łukasz Mańka

Łukasz Mańka Monitoring
administrator

Temat: PHP, Linux, Apache i MS SQL

Jarosław Rafa:
Krzysztof Kania:

Mam problem. Otóż potrzebuje się dostać do baz MS SQL z poziomu PHP zainstalowanego na linuksie (dokładnie to dystrybucja SuSE). Pobrałem, skonfigurowałem, skompilowałem, etc. pakiet FreeTDS. Niestety aby PHP go "zobaczyło" potrzeba przekompilować PHP. A ja nie chce ruszać PHP ani Apache bo to maszyna produkcyjna. Więc pytanie jest takie - jak, bez ruszania PHP i Apache, sprawić by PHP "rozumiało" polecenia mssql_connect czy mssql_fetch_row. Nie da się po prostu dodać biblioteki .so do php.ini?

Hm... o ile pamietam to ja właśnie tak zrobiłem - tyle że to było na Red Hacie, nie na SuSE. Ściągnąłem gotową paczkę z modułem php-mssql, FreeTDS-a, zainstalowałem (nic nie kompilowałem - ściągnąłem gotowe paczki). Po restarcie Apache'a PHP zobaczyło rozszerzenie mssql.

Dokładnie FreeTDS radzi sobie z tym świetnie tylko, że jest przeznaczony pod Red Hata i Fedore.
Krzysztof Kania

Krzysztof Kania Inżynier systemowy
Cisco (CCNA R&S,
Voice, Security)

Temat: PHP, Linux, Apache i MS SQL

Łukasz M.:

Dokładnie FreeTDS radzi sobie z tym świetnie tylko, że jest przeznaczony pod Red Hata i Fedore.

Rzecz w tym że ściągnąłem źródło, pomyślnie przeszło configure, make, make install i jak uruchomię tsql (z FreeTDS) do testowania połączeń to łączy się z MS SQL.

Krzysztof
Jarosław Rafa

Jarosław Rafa senior software
engineer, Motorola
Solutions Systems
Polska

Temat: PHP, Linux, Apache i MS SQL

No ale masz to rozszerzenie mssql w php.ini czy nie masz?
Krzysztof Kania

Krzysztof Kania Inżynier systemowy
Cisco (CCNA R&S,
Voice, Security)

Temat: PHP, Linux, Apache i MS SQL

Jarosław Rafa:
No ale masz to rozszerzenie mssql w php.ini czy nie masz?

Nie. Ale takiej biblioteki też nie mam. FreeTDS po kompilacji i instalacji utworzył:

libct.so -> libct.so.4.0.0
libct.so.4 -> libct.so.4.0.0
libct.so.4.0.0
libsybdb.so -> libsybdb.so.5.0.0
libsybdb.so.5 -> libsybdb.so.5.0.0
libsybdb.so.5.0.0

Krzysztof
Jarosław Rafa

Jarosław Rafa senior software
engineer, Motorola
Solutions Systems
Polska

Temat: PHP, Linux, Apache i MS SQL

Ale to jest tylko sam FreeTDS.
Brakuje ci modulu mssql.so do PHP.
To dziala w taki sposob: PHP -> mssql.so -> FreeTDS -> MS SQL
Poszukaj, czy nie ma do Twojej dystrybucji jakiejs dodatkowej paczki z rozszerzeniami do PHP, jezeli nie miales tego modulu w standardowej instalce (o ile instalowales PHP z paczki). Do RedHata jest np. cos takiego jak php-mssql-<tu numerki wersji>.rpm. Mozesz to znalezc na http://phprpms.sourceforge.net/, jest tam tez wersja zrodlowa, wiec mozesz sprobowac skompilowac samemu...
Krzysztof Kania

Krzysztof Kania Inżynier systemowy
Cisco (CCNA R&S,
Voice, Security)

Temat: PHP, Linux, Apache i MS SQL

Jarosław Rafa:
Ale to jest tylko sam FreeTDS.
Brakuje ci modulu mssql.so do PHP.

Zarzuciłem ten kierunek i poszedłem w unixODBC.

Rezultat jest taki:

linux:/# isql -v MSSQL username password
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> quit

Czyli połączenie unixODBC -> FreeTDS -> MS SQL działa.

unixODBC oczywiście skonfigurowane w php.ini.

Ale próba wykonania jakiegokolwiek kodu PHP kończy się pięknym komunikatem "Segmentation fault". Ja chyba osiwieje.

KrzysztofKrzysztof Kania edytował(a) ten post dnia 30.04.08 o godzinie 20:24

konto usunięte

Temat: PHP, Linux, Apache i MS SQL

jesli probujesz przekompilowac cos z jednej dystrybucji na druga, to polecam genialna paczke o nazwie alien.

Dziwi mnie jednak, ze nie masz srodowiska testowego, zeby sie tym pobawic, zanim pojdzie to na produkcje.

pozdrawiam

m
Krzysztof Kania

Krzysztof Kania Inżynier systemowy
Cisco (CCNA R&S,
Voice, Security)

Temat: PHP, Linux, Apache i MS SQL

Michal Sosin:
Dziwi mnie jednak, ze nie masz srodowiska testowego, zeby sie tym pobawic, zanim pojdzie to na produkcje.

To bardziej zawiła sprawa żeby teraz opisywać wszystkie szczegóły.

Zresztą mam wrażenie że PHP to po prostu zły kierunek. Teraz mam IIS 7 na W2K8, zainstalowane PHP 5.2.5 jako ISAPI, dorzucone php_mssql i co ..... ano phpinfo nic nie wie o żadnym MS SQL, nic o PDO, i twierdzi że mssql_connect to "Fatal error: Call to undefined function mssql_connect()". Osiwieje.

Też mi się zachciało zabawy. A podobno Cisco ma skomplikowany command line i że sieci to skomplikowane zagadnienie. Ech już wolę te swoją piaskownicę z sieciami.

Krzysztof
Łukasz Mańka

Łukasz Mańka Monitoring
administrator

Temat: PHP, Linux, Apache i MS SQL

Krzysztof Kania:
Michal Sosin:
Dziwi mnie jednak, ze nie masz srodowiska testowego, zeby sie tym pobawic, zanim pojdzie to na produkcje.

To bardziej zawiła sprawa żeby teraz opisywać wszystkie szczegóły.

Zresztą mam wrażenie że PHP to po prostu zły kierunek. Teraz mam IIS 7 na W2K8, zainstalowane PHP 5.2.5 jako ISAPI, dorzucone php_mssql i co ..... ano phpinfo nic nie wie o żadnym MS SQL, nic o PDO, i twierdzi że mssql_connect to "Fatal error: Call to undefined function mssql_connect()". Osiwieje.

Też mi się zachciało zabawy. A podobno Cisco ma skomplikowany command line i że sieci to skomplikowane zagadnienie. Ech już wolę te swoją piaskownicę z sieciami.

Krzysztof

To cos niezle nakaszanione jest z konfiguracja calej platformy, bo ja na w2k3 takie rozwiazanie robilem bezproblemowo. W ramach testow zawsze mozna zainstalowac RH ;)
Stanisław P.

Stanisław P. Software designer

Temat: PHP, Linux, Apache i MS SQL

Krzysztof Kania:
Jarosław Rafa:
Ale to jest tylko sam FreeTDS.
Brakuje ci modulu mssql.so do PHP.

Zarzuciłem ten kierunek i poszedłem w unixODBC.
No to kontynuując kierunek...
unixODBC oczywiście skonfigurowane w php.ini.
Tzn.? Jest "extension = odbc.so", albo odpowiednik?
Ale próba wykonania jakiegokolwiek kodu PHP kończy się pięknym komunikatem "Segmentation fault". Ja chyba osiwieje.

Co segfault'uje? Apache? php? ...

Skąd masz rozszerzenie odbc do php? Było w paczce gotowe? Czy kompilowałeś? Jeśli w paczce, to czy masz cały stack apache+php+unixodbc z tego samego źródła?

Co to jest jakikolwiek kod? Bo dziwne byłoby, jakby sypało się w czasie 'echo' np.

Czy po dodaniu odbc.so do php.ini i restarcie apache masz jakieś błędy w error-log'u?
Czy możesz wykonać skrypt `echo 'abc'` z apache'a? (albo uruchamiając to bezpośrednio w binarce `php`? - o ile masz wersję cli zainstalowaną)
Czy możesz wykonać phpinfo? I czy widać w nim plugin odbc?
Czy segfaultuje dopiero przy próbie połączenia?

Bo narazie to mało informacji trochę mamy, a dużo ogólników i skakania po temacie :/

+ jak ktoś ma doświadczenie z sieciami, to i cisco mu nie straszne - a jak z lamp'em, to będzie potrafił taką konfigurację w kilka minut uruchomić - nie ma w tym raczej nic dziwnego...
Krzysztof Kania

Krzysztof Kania Inżynier systemowy
Cisco (CCNA R&S,
Voice, Security)

Temat: PHP, Linux, Apache i MS SQL

No dobra, udało się wszystko pospinać do kupy, phpinfo() wreszcie pokazuje że widzi moduł mssql ale okazało się że to tylko tyci krok bo teraz mam:

"PHP Warning: mssql_connect(): Unable to connect to server."

Udało mi sie podłączyć przez odbc_connect ale strasznie toto kapryśne - raz działa raz nie i do tego bardzo wolno.

Może dlatego że wszystko pospinane na VMWare :-(

No i próbowałem PDO z driverem MSSQL ale wywala błąd że brakuje mu "DBLib" coś tam.

Krzysztof
Krzysztof Kania

Krzysztof Kania Inżynier systemowy
Cisco (CCNA R&S,
Voice, Security)

Temat: PHP, Linux, Apache i MS SQL

Krzysztof Kania:
Udało mi sie podłączyć przez odbc_connect ale strasznie toto kapryśne - raz działa raz nie i do tego bardzo wolno.

Może dlatego że wszystko pospinane na VMWare :-(

Chyba faktycznie VMWare był przyczyną (no cóż, moja maszynka musiała uciągnąć w sumie trzy Widnowsy - jeden natywnie i dwa wirtualizowane W2K3 i W2K8).

Po przeniesieniu na środowisko produkcyjne działa gites :-)

Krzysztof
Jarosław Rafa

Jarosław Rafa senior software
engineer, Motorola
Solutions Systems
Polska

Temat: PHP, Linux, Apache i MS SQL

To znaczy o ile dobrze rozumiem maszyne produkcyjna masz na Linuksie a testowa na Windowsach? Raczej bym odradzal testowanie w takiej konfiguracji. Cos, co ma docelowo dzialac na Linuksie, testuj na Linuksie, jak produkcyjnym srodowiskiem maja byc Windowsy, testuj na Windowsach. Mimo ze tu i tu jest Apache i PHP to nie ma pelnej przenosnosci i sa rozne niuanse, ktore w jednym srodowisku dzialaja tak, a w innym inaczej...
Paweł K.

Paweł K. radca prawny,

Temat: PHP, Linux, Apache i MS SQL

Boże o czym Wy mówicie?????? czy to jest...bezpieczne dla zdrowia :)???
Krzysztof Kania

Krzysztof Kania Inżynier systemowy
Cisco (CCNA R&S,
Voice, Security)

Temat: PHP, Linux, Apache i MS SQL

Paweł Kania:
Boże o czym Wy mówicie?????? czy to jest...bezpieczne dla zdrowia :)???

Brat, lepiej nie czytaj, tak będzie zdrowiej.

Krzysztof

Następna dyskusja:

Linux vs Windows server jak...




Wyślij zaproszenie do