Dnes je 18. prosince 2017  02:07
nepřihlášen  Neznámý   zaregistruj se
"Každý program má dva účely: Jeden, pro který byl sestaven, a druhý, pro který nebyl."

FreeTDS - z PHP na Linuxu do Microsoft SQL Serveru

Jak vyřešíme situaci, kdy chceme pomocí PHP přistupovat z Linuxu k datům uloženým na úplně jiném (Windowsím) počítači v databázi Microsoft SQL Serveru 7.0/2000 ? Jinak řečeno, potřebujeme např. na webu zobrazovat data z databáze MS SQL Serveru a web server nám běží na Linuxovém serveru. Odpověď je FreeTDS (Tabular DataStream)


FreeTDS je sada knihovních funkcí pro systémy Unix a Linux umožňující nativní přístup do databáze Sybase nebo databáze Microsoft SQL Serveru. FreeTDS volně využívá protokolu TDS (Tabular DataStream), který tyto databáze používají pro komunikaci s klienty. Na linuxovém boxu je možné využít spolupráci s ostatním softwarem jako PHP nebo Perl. Microsoft SQL Server využívá standardně pro komunikaci s klienty tcp port 1433, což je i oficiální označení portu pro SQL Server vydané sdružením IANA.

Instalace:

Konfiguraci a instalaci budeme provádět na RedHat Linuxu 7.1, ale předpokládám, že vše bude podobné i v jiných distribucích. Bude třeba zkompilovat PHP s podporou FreeTDS. Nový PHP modul pak pouze zkopírujeme do úložiště modulů serveru Apache (/usr/lib/apache). Budu zde demonstrovat kompilaci PHP 4.0.4pl1 a poslední verze 4.1.1. U verze 4.0.4pl1 využiji stávající přídavné moduly MySQL(mysql.so), LDAP(ldap.so),PgSQL(pgsql.so) a IMAP(imap.so), jejichž binární forma je součástí distribuce RedHatu. Direktiva extension_dir=/usr/lib/php4 a řádka extension=ext_modul.so v souboru /etc/php.ini umožní automatické nahrání modulu do paměti při startu http serveru. U verze 4.1.1 je vše zkompilováno do modulu libphp4.so, tzn. podpora MySQL, PgSQL, IMAP, GD, TTF, Sybase (FreeTDS), sessions, FTP a další.

Překlad freetds-0.51.tgz (novější verze 0.52 a 0.53 se mi nepodařily rozchodit s MS-SQL 2000)

FreeTDS běží na protokolech TDS verze 4.2, 5.0 a 7.0. Pokud chceme přistupovat k Microsoft SQL Serveru, musíme použít verze 4.2 nebo 7.0. Verze 5.0 není MS-SQL Serverem podporována. Rozdíl mezi verzí 4.2 a 7.0 je v tom, že verze 7.0 umí pracovat s polí o více než 255 znaky. U Sybase na verzi protokolu nezáleží.

$ ./configure --prefix=/etc/freetds --with-tdsver=4.2 --enable-dbmfix
$ make
$ make install

Přidejte řádku /etc/freetds/lib do /etc/ld.so.conf a spusťte ldconfig.

Soubor /etc/freetds/interfaces bude obsahovat vaše vzdálené MS-SQL servery,

nazev_serveru
service transport physical_layer hostname port

např.:

sql_server
query tcp tds4.2 192.168.10.10 1433
master tcp tds4.2 192.168.10.10 1433

Překlad php 4.0.4pl1

U této verze PHP je třeba pár úprav zdrojového kódu PHP. Otevřete soubor /etc/sybase/php_sybase_db.c v zdrojovém archivu a změňte všechny reference "dbopen" na "tdsdbopen". Tato změna souvisí s direktivou --enable-dbmfix při překladu FreeTDS a je zde proto, že Apache je linkován s knihovnou DBM, která také obsahuje funkci dbopen().

$ ./configure --prefix=/usr --with-config-file-path=/etc --disable-debug --enable-pic \
--enable-shared --enable-inline-optimization --with-apxs=/usr/sbin/apxs --with-exec-dir=/usr/bin \
--with-sybase=/etc/freetds --with-regex=system --with-gettext --with-gd --with-jpeg-dir=/usr \
--with-png --with-zlib --with-db2 --with-db3 --with-gdbm --enable-debugger --enable-magic-quotes \
--enable-safe-mode --enable-sockets --enable-sysvsem --enable-sysvshm --enable-track-vars \
--enable-yp --enable-ftp --enable-wddx --without-mysql --without-oracle --without-oci8 --with-xml
$ make

Překlad php 4.1.1

$ ./configure --prefix=/usr --with-config-file-path=/etc --disable-debug --enable-pic \
--enable-shared --enable-inline-optimization --with-apxs=/usr/sbin/apxs --with-exec-dir=/usr/bin \
--with-sybase=/etc/freetds --with-regex=system --with-gettext --with-gd --with-jpeg-dir=/usr \
--with-png --with-zlib --with-db2 --with-db3 --with-gdbm --enable-debugger --enable-magic-quotes \
--enable-safe-mode --enable-sockets --enable-sysvsem --enable-sysvshm --enable-track-vars \
--enable-yp --enable-ftp --enable-wddx --with-mysql --without-oracle --without-oci8 --with-xml \
--with-ttf --with-imap --with-ldap --with-kerberos --with-imap-ssl --with-pgsql
$ make

Zastavte Apache příkazem killall -HUP httpd nebo /etc/init.d/httpd stop
zkopírujte přeložený modul libphp4.so do adresáře /usr/lib/apache nebo tam, odkud Apache nahrává DSO (Dynamic Shared Object) moduly.
Spusťte httpd.

Základní testy

Uvedu zde 2 základní testy. První bude sledovat, pokud vůbec stroj vyšle žádost o data, a druhý bude malý php skriptík, který je uveden v tarballu FreeTDS.

  • Na stroji, kde máme nainstalovaný http server spustíme

    $ tcpdump src host ip_tohoto_stroje and dst host ip_mssql_stroje

  • a z jakéhokoliv stroje spustíme stránku s tímto skriptem

    <html>
    <body bgcolor=white>
    <?php
    $dbproc = mssql_connect("sql_server","user","heslo");
    if (! $dbproc) { return;}
    $res = mssql_query("select * from test",$dbproc);
    if (! $res) { return;}
    while ($arr = mssql_fetch_array($res)) {
    print $arr["i"] . " " . $arr["v"] . "<br>\n";
    }
    ?>
    </body>
    </html>

Odkazy

http://franklin.oit.unc.edu/cgi-bin/lyris.pl?visit=freetds - FreeTDS mailing list
http://www.freetds.org/userguide/book1.htm - FreeTDS User Guide
http://www.microsoft.com/sql/productdoc/ - Microsoft Books Online
http://www.sybase.com/support/manuals - Sybase documentation
http://www.phpbuilder.com/columns/alberto20000919.php3?page=1 - PHP Builder - Accessing a Microsoft SQL Server database from PHP running under Linux

Dodatky

Překlad php do binárního souboru pro spouštění CGI a shellových skriptů

Při konfiguraci je třeba přidat parametr --without-apache a smazat parametr --with-apxs= .
Poté make && make install.



Autor: Roman Pěch
Vytvořeno: 30.12.2001
Oblast: Programování




Související články:

12.09.2001  PHP v objetí objektů (převzato)




Diskuse k článku "FreeTDS - z PHP na Linuxu do Microsoft SQL Serveru":

DatumAutorPředmět
    zobraz vše    přidej komentář

Krátké zprávy:

  • 04.04.2005 20:47:51
    LinuxExpo: IBM, Red Hat, Mozilla i OpenOffice.org 2.0

    Ve dnech 12. až 14. dubna 2005, se uskuteční pátý ročník veletrhu LinuxExpo, největší středoevropské konference a výstavy zaměřené především na operační systém Linux, Open Source software a související témata. Letos bude LinuxExpo hostit Hotel Olympik v Praze, jehož reprezentativní prostory poskytují nejen vysoký standard, ale přinesou i komfortní zázemí konferenční části, na kterou kladou pořadatelé akce stále větší důraz. V rámci konferenčního programu shlédnou návštěvníci nejen celou řadu odborných a popularizačních přednášek, ale budou se moci zúčastnit i několika specializovaných konferencí.

    Tajemství strategie společnosti IBM ve vztahu k Linuxu a otevřeným standardům nám poodhalí hned první z konferenčních bloků v úterý 12.4. Zasvěcené informace se dozvíme přímo od specialistů IBM z Česka i zahraničí. Linux nezanedbává ani legendární SILICON GRAPHICS. O jeho využití nejen pro náročné vizualizace, ale třeba jako platformu pro budování infrastruktur moderních podnikových řešení budou hovořit zástupci SILICON GRAPHICS s.r.o. během středečního konferenčního programu. Pokud se chcete dozvědět více o distribuci Red Hat, určitě si nenechte ujít čtvrteční konferenci s názvem "Red Hat - Prostředí pro Byznys". Přinese ji distributor Red Hat v ČR, firma Servodata.

    Z dalších prezentovaných distribucí jmenujme například Mandrakelinux, zastoupený společností QCM. Přes rostoucí komerční specializaci nezapomíná LinuxExpo ani na neziskové a vzdělávací projekty, které se představí v rámci Free Linux Zone, připravované ve spolupráci se serverem Linuxsoft. Vydržíte-li do čtvrtečního odpoledne, můžete být přítomni exkluzivní premiéry nové verze populárního kancelářského balíku OpenOffice.org 2.0. David Majda z týmu Czilla přednese přednášku Mozilla pro vývojáře, prezentovat se budou také známá česká live distribuce Danix, DTP řešení pro Linux aplikace Scribus, databáze Firebird a mnoho dalších zajímavých projektů.

    Kompletní přehled konferenčního programu, stejně jako aktuální a podrobné informace o veletrhu LinuxExpo najdete na internetové adrese www.linuxexpo.cz. Tam se také návštěvníci mohou registrovat a získat tak volnou vstupenku na dny pro veřejnost, nebo si dokonce rezervovat místa na jednotlivých přednáškách.[RP]


  • 07.11.2002 23:42:55
    Red Hat Linux Advisory: glibc
    Synopsis: Updated glibc packages fix vulnerabilities in resolver
    Issue date: 2002-09-10
    Updated on: 2002-11-06
    Product: Red Hat Linux 6.2 7.0 7.1 7.2 7.3
    Keywords: glibc resolv DNS
    Více na LinuxToday.[RP]


  • 28.10.2002 22:51:34
    Red Hat Linux Advisory: ypserv
    Synopsis: Updated ypserv packages fixes memory leak
    Advisory ID: RHSA-2002:223-07
    Product: Red Hat Linux 6.2 7.0 7.1 7.2 7.3
    Keywords: ypserv memory leak
    Více na LinuxToday.[RP]


  • 20.10.2002 22:58:22
    Vyšlo nové beta jádro 2.5.44. Changelog naleznete zde.[RP]


  • 20.10.2002 22:36:08
    Red Hat Linux Advisory: mozilla
    Synopsis: Updated Mozilla packages fix security vulnerabilities
    Advisory ID: RHSA-2002:192-13
    Product: Red Hat Linux 7.2 7.3 8.0
    Více na LinuxToday. [RP]

    Archiv krátkých zpráv

    Oblasti:

    Informace:

  • Pokud chcete pro nás psát čtěte zde.
  • e-mail redakce: redakce@linux.poweroff.cz

  • Umístěte si náš banner na stránku





  • H E A D L I N E S


    PHPBuilder:
  • PHP Web Blog - Part 2
  • Creating an Online Survey - Part 2
  • PHP Web Blog - Part 1
  • Preventing Web Attacks with Apache
  • phpwiki - The Wiki for PHP Developers
  • Developing a Ajax-driven Shopping Cart with PHP and Prototype, Part 2
  • Developing a Ajax-driven Shopping Cart with PHP and Prototype
  • PHP Form Validation System: An Object-Oriented Approach
  • Validating PHP User Sessions
  • Preventing Spam When Using PHP's Mail Function

    LinuxToday:
  • Phoronix Test Suite Brings Linux Benchmarking to the Desktop
  • Open Source Tour of Europe: Portugal
  • Linux On Mars!
  • Hey FOSS Project, What's Your Pedigree?
  • How Linux Could Better Market Itself
  • Measuring Open Source Adoption the Hard Way
  • Wine 1.0 Review
  • Cobbler Pieces Together Mass Red Hat Linux Installations
  • Open Source Solves UK Cancer Charity Challenges
  • Bash Arrays



    Hledání

    Zadejte (několik) klíčových slov oddělených mezerou.
  • Hledej v článcích
  • Hledej v krátkých zprávách
  • fulltextové vyhledávání

    Nejčtenější články:

  • QMAIL - přechod na Maildir a instalace kompletního poštovního systému (363895)
  • RShaper - omezení rychlosti síťového provozu (83253)
  • PHP v objetí objektů (převzato) (65463)
  • Copyright © 2001 PowerNET