Najnovšie na Twitteri
    sledujte môj Twitter
    Moje projekty

    PDO a PHP 5.0.x

    Publikované: 17.02.2007 17:37 | Zobrazené: 642x

    U zákazníka je server so SuSE Linuxom 9.1, 64 bitová verzia. Na môj vkus trochu obstarožný systém a z rôznych dôvodov je problém doň čokoľvek doinštalovať. Nejako sa tam podarilo rozbehať PHP 5.0.4. Kvôli rozličným závislostiam na novších knižniciach a mojej neochote upgradovať konkrétne knižnice (predsa len im na tom stroji beží obchodný systém celého reťazca a radšej sa v tom veľmi nevŕtam) tam nie je možné nainštalovať PHP 5.2.x.

    5.0.4 teda bežala podľa potrieb. Z neznámych príčin sa mi nepodarilo nijako docieliť, aby po kompilácii bola vytvorená binárka PECL. Ale keďže sa dá PDO nainštalovať cez PEAR, tak ma to až tak netrápilo.

    Inštalácia PDO a PDO_SQLite pomocou PEAR prebehla bez jedinej chybičky. PDO knižnice sa objavili v extensions adresári. Povolil som ich v konfiguráku. A... a nič. Ako keby neboli. Dal som sa teda do kompilovania PHP spolu s PDO. Kompilácia prebehla bez problémov. Akurát PDO bolo opäť neprítomné. Ale tentokrát som už aspoň vedel, kde je chyba, keďže mi PHP vyhubovalo, že PDO musí byť inicializované skôr ako PDO_SQLite driver. Cítil som z toho niečo nepekné.

    Po niekoľkých hodinách mocovania sa som to nakoniec vyriešil. Je treba trošku rypnúť do zdrojových súborov PHP. Aký je teda presný postup?

    Najskôr si treba stiahnuť všetky súčasti: php 5.0.4, rozšírenie PDO a driver pre SQLite3

    Rozbalí sa PHP. Adresár, ktorý vznikne po rozbalení PDO, premenujete na pdo a presuniete ho do php-5.0.4/ext/. Adresár s driverom premenujete na pdo_sqlite a taktiež presuniete do php-5.0.4/ext/. Vytvoríte nový configure script.

    tar xzf php-5.0.4.tar.gz
    tar xzf PDO-*tgz
    tar xzf PDO_SQLITE-*tgz
    rm -f PDO-*tgz
    rm -f PDO_SQLITE-*tgz
    mv PDO-* php-5.0.4/ext/pdo
    mv PDO_SQLITE-* php-5.0.4/ext/pdo_sqlite
    cd php-5.0.4
    ./buildconf --force
    

    Teraz treba novovytvorený configure skript spustiť. K iným potrebným parametrom sa pridá aj "--enable-pdo" a "--with-pdo-sqlite". Keď dobehne, pozrieme sa na zúbky zdrojovým súborom php. Konkrétne nás zaujímajú súbory "main/internal_functions.c" a "main/internal_functions_cli.c". V každom z nich postupujeme rovnako. Nájdeme riadok

    zend_module_entry *php_builtin_extensions[] = {
    

    Pod ním nasleduje zoznam prvkov poľa, zaujímame sa o tieto dva: "phpext_pdo_sqlite_ptr" a "phpext_pdo_ptr". Jediné, čo treba urobiť je to, aby bolo phpext_pdo_ptr uvedené skôr, ako phpext_pdo_sqlite_ptr.

    Čiže to nakoniec bude vyzerať asi nejako takto:

    zend_module_entry *php_builtin_extensions[] = {
      ...
      phpext_pdo_ptr,
      phpext_pdo_sqlite_ptr,
      ...
    };
    

    A to je to celé tajomstvo. Môže sa spustiť make a po make install je php funkčné aj s rozšírením PDO a v rámci neho podporou databáze SQLite3.

    Pošli na: Facebook   vybrali.sme.sk
    Komentáre:

    Zatiaľ nie sú žiadne komentáre.

    Pridať komentár