Portál AbcLinuxu, 12. května 2025 04:36

Dotaz: z php na linuxu na ms sql server

12.7.2005 16:48 Open Mage | skóre: 24 | Lom
z php na linuxu na ms sql server
Přečteno: 662×
Odpovědět | Admin
Zdravím, potřebuji vyřešit reporty ze CTI serveru Ericssonu, který bohužel běží na MS SQL. Reporty chci denně automatizovat a vystavovat na webserveru (intranet na Fedora Core 3, Apache, PHP 3.10). Viděl jsem několik možností - 1) ODBC (ztroskotal jsem na tom, že nemám v distribuční fedoře driver pro mssql a na webu www.unixodbc.org je odkaz pouze na jakousi trialverzi) 2) FreeTDS samotně (ztroskotal jsem na faktu, že si nemohu dovolit překompilovat PHP s podporou freetds a mssql, i konfigurace se mi zdá složitá 3) pak jsem zkoušel FreeTDS s php-mssql z http://phprpms.sourceforge.net/mssql - tam by neměla být nutná rekompilace a tyhle náročný změny (leč toto ztroskotalo na tom, že se mi nedaří nainstalovat to php-mssql ani freetds - nevim proč, je to nějaký obecný rpm, prostě mi fedora hlásí že to není korektní rpm balíček).

Zoufalost mě tedy přivedla sem k tučňákům - má s tím někdo zkušenosti, nebo alespoň odkaz na nějaký fakt nejjednodušší a hlavně srozumitlený řešení - nějakej tutorial nebo manuál ?

Díky moc, Standa
Stanislav Puffler, DiS. specialista na internet marketing a ecommerce www.openmage.cz tel. 773 565 747
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

12.7.2005 18:45 zlosyn | skóre: 24
Rozbalit Rozbalit vše Re: z php na linuxu na ms sql server
Odpovědět | | Sbalit | Link | Blokovat | Admin

Varianta 2 by mela fungovat, jen se nebat. Varianta 3 urcite funguje (ted jsem to zkousel, balicky jsou to normalni). Problem je spis v tom, ze soucasne php pro FC3 je 4.3.11, pro ktere jsou i delane ty baliky.

Ja vim, ze to neni primo rada, ale pro zacatek by to mohlo byt dobre. V podstate by mohlo stacit odinstalovat soucasne php a dat tam php z updatu + k tomu baliky pro mssql. (zalezi ovsem taky na tom, jestli to soucsna php 3.10 je kompilovane s nejakyma specialnima parametrama nebo ne .. )

13.7.2005 09:57 Open Mage | skóre: 24 | Lom
Rozbalit Rozbalit vše Re: z php na linuxu na ms sql server
Mě se hodně zamlouvá pro aktuální situaci (provoz na webserveru od 6 ráno do 12 v noci - nechci to dělat v pozdní noci...) varianta č. 3 - leč na serveru je FC3 s PHP 4.3.10 - nevadilo by, na webu jsou soubory pro FC s myslim odpovidajici verzi php-mssql-4.3.10 a podobne i s freetds. Nerozumim tomu jak pisete ze :

Problem je spis v tom, ze soucasne php pro FC3 je 4.3.11, pro ktere jsou i delane ty baliky.

Muj problem se projevuje takto :
[root@lamp Install]# ls
freetds-0.62.3-1.1.fc3.rf.i386.rpm  freetds-0.62.4-1.i386.rpm  php-mssql-4.3.10-2.4.2.i386.rpm  php-mssql-4.3.11-2.5.1.i386.rpm
[root@lamp Install]# rpm -ivh php-mssql-4.3.10-2.4.2.i386.rpm
php-mssql-4.3.10-2.4.2.i386.rpm: not an rpm package (or package manifest):
Stanislav Puffler, DiS. specialista na internet marketing a ecommerce www.openmage.cz tel. 773 565 747
13.7.2005 10:13 Open Mage | skóre: 24 | Lom
Rozbalit Rozbalit vše Re: z php na linuxu na ms sql server
Ještě upřesňující poznámka, pokud chci nainstalit třeba freetds v té verzi 0.62.3-1.1.fc3.rf.i386.rpm tak nemam problém a jde to. Nevim co je na těch balících obecných divnýho. Na google jsem se dočetl jen něco, že nebinární balíky a tak pokud jsem tam napsal tu chybu.
Stanislav Puffler, DiS. specialista na internet marketing a ecommerce www.openmage.cz tel. 773 565 747
13.7.2005 14:46 Open Mage | skóre: 24 | Lom
Rozbalit Rozbalit vše Re: z php na linuxu na ms sql server
Btw, než se mi podaří vyřešit instalaci těch RPM, zkoušel jsem ještě další varianty.

ad 4) ODBC - zkoušel jsem podle tutoriálu na http://www.linuxjournal.com/node/6636/print. Krok s TDS byl bez potíží a přes tsql -S mssql.servername.tld -U ValidUser Password: password v pohodě. Ovšem krok nastavení ODBC to už je porod - kdysi jsem to zkoušel a po dlouhém laborování prostě vzdal (ikdyž to dělám fakt nerad). Zkusil jsem podle postupu v ODBCConfigu ve Fedora Core nastavit driver a system dns - první problém je, že nemám libtdsodbc.so a libtdsS.so, ale toto :
[root@lamp lib]# ls -laF libtds*
lrwxrwxrwx  1 root root     17 Äec 12 16:01 libtdsodbc.so.0 -> libtdsodbc.so.0.0*
-rwxr-xr-x  1 root root 570066 lis 16  2004 libtdsodbc.so.0.0*
lrwxrwxrwx  1 root root     13 Äec 12 16:01 libtds.so.3 -> libtds.so.3.0*
-rwxr-xr-x  1 root root 403815 lis 16  2004 libtds.so.3.0*
lrwxrwxrwx  1 root root     16 Äec 12 16:01 libtdssrv.so.1 -> libtdssrv.so.1.0*
-rwxr-xr-x  1 root root 435396 lis 16  2004 libtdssrv.so.1.0*
lrwxrwxrwx  1 root root     16 bĹe 15 07:57 libtdsS.so.1 -> libtdsS.so.1.0.0*
-rwxr-xr-x  1 root root   4092 zĂĄĹ 23  2004 libtdsS.so.1.0.0*
Zkoušel jsem tedy jak so.0 tak so.0.0, ale nic. Také mam k daným knihovnám jinou cestu, což by ovšem nemělo vadit. Druhej pokus jsem už pak dal ručně v /etc/odbcinst.ini - asi následovně :
[TDS]
Description             = v.0.63.2 s protokolem v.8.0
Driver          = /usr/lib/libtdsodbc.so.0.0
Setup           = /usr/lib/libtdsS.so.1.0.0
FileUsage               = 1
Ovšem opět bez úspěchu, k isql se nepřipojím :
[root@lamp etc]# isql -v jmenopripojeni user password
[S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source
[ISQL]ERROR: Could not SQLConnect
ad 5) Další možnost kterou jsem našel je ADOdb, což je jakási abstrakční databázová vrstva. Bohužel sama o sobě mi také nefunguje a na to abych ji honil přes ODBC drive a tak... mi přijde lepší jet rovnou přes unixODBC samotné.

PROSTĚ DRUHEJ DEN V SITUACI ZOUFALOST :o) Uvítám jakékoliv rady.
Stanislav Puffler, DiS. specialista na internet marketing a ecommerce www.openmage.cz tel. 773 565 747
14.7.2005 12:09 Open Mage | skóre: 24 | Lom
Rozbalit Rozbalit vše Re: z php na linuxu na ms sql server
Tak už tohle téma koukám vypadá jako můj BLOG :o)

Další varianty na které jsem přišel jsou :

ad 6) ODBTP což znamená Open Database Transport Protocol a přenáší data z mssql na linux pomocí TCP/IP. Na SQL server se nainstaluje služba která vysílá informace a linuxový klient je zpracovává. Zní to hezky, leč opět stojím na spoustě kroků, docela složitý - na mě:o(

ad 7) Poslední co jsem teď objevil je PEAR, s tím nemám zatím žádné zkušenosti.
Stanislav Puffler, DiS. specialista na internet marketing a ecommerce www.openmage.cz tel. 773 565 747
18.7.2005 16:33 Open Mage | skóre: 24 | Lom
Rozbalit Rozbalit vše Re: z php na linuxu na ms sql server
Ne vždy je Linux (LAMP) řešení, použil jsem ASP (příručku jsem přečetl za víkend) na IIS a šlape to jako hodinky. Ikdyž jsem k tomuhle řešení sahnul až po týdnu bez úspěchu v PHP na Linuxu, mrzí mě to. Propojení unixovýho světa se světem okýnek je zdá se stále problém, ač je vina na straně vokýnkářů (uzavřenost). Tímto uzavírám tento "můj blog" ...
Stanislav Puffler, DiS. specialista na internet marketing a ecommerce www.openmage.cz tel. 773 565 747
2.11.2005 09:59 Pavel Treutner | skóre: 4
Rozbalit Rozbalit vše Re: z php na linuxu na ms sql server
Odpovědět | | Sbalit | Link | Blokovat | Admin

Sice pozde, ale presto sem napisu reseni, ktere pomohlo mne. Instalace byla velice jednoducha - tedy potom co jsem se prohrabal tim mnozstvim ruznych postupu a navodu. Popis plati pro Debian testing (a trochu unstable) s PHP 5, ale na distribuci by pochopitelne zalezet nemelo.

  1. Nainstalovat balik php5-odbc - ten je zkompilovany s podporou unixODBC (melo by jit pouzit i iODBC, ale v me distribuci je proste unixODBC)
  2. Nainstalovat balik tdsodbc a zkontrolovat, jestli se vytvoril odpovidajici zaznam v /etc/odbcinst.ini
  3. Vytvorit zaznamy v /etc/odbc.ini pro vsechny DSN
  4. Restartovat Apache

Trochu mi pomohly clanky na PHPBuilder.com a Linux Journal.

29.3.2006 15:55 Pavel Treutner | skóre: 4
Rozbalit Rozbalit vše Re: z php na linuxu na ms sql server
Ted jsem narazil na problem s kodovanim. Data posilam z PHP skriptu v UTF-8 a pri vkladani zaznamu, kde jsou nektere znaky s diakritikou, se objevuje chyba: [unixODBC][FreeTDS][SQL Server]Error converting client characters into server's character set. Some character(s) could not be converted., SQL state S1000 in SQLExecDirect. Radek se do tabulky nevlozi. V manualu k FreeTDS jsem objevil direktivu client charset, kterou jsem v souboru /etc/freetds/freetds.conf nastavil na hodnotu UTF-8. Nic se ale nezmenilo, v PHP pouzivam funkce odbc_*() a nejsem si jisty, jestli se v tom pripade freetds.conf vubec bere v uvahu, protoze kofigurace DSN se provadi v /etc/odbc.ini
30.3.2006 14:11 Pavel Treutner | skóre: 4
Rozbalit Rozbalit vše Re: z php na linuxu na ms sql server
Problem jsem castecne vyresil, sice z toho nejsem uplne nadseny, ale alespon jsem se dostal do pouzitelneho stavu. Experimentalne jsem dospel k presvedceni, ze pri pouziti ovladace FreeTDS pres ODBC funkce z PHP se soubor freetds.conf vubec nebere v uvahu. Reseni spociva v tom nastavit protokol TDS na verzi 4.2 (ne 7.0 a novejsi) a kodovani retezcu si konvertovat sam.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.