Diabl0

Debian, PDO i Oracle (pdo_oci)

Kolejny pozornie prosty problem, i kolejne 2 godziny z życia, tym razem na próbie kompilacli pdo_oci pod Debianem. Pomijam fakt że Debian nie ma gotowego pakietu – zdarza się. Ale już same problemy z zależnościami to lekka przesada.

Pomimo poprawnie zainstalowanego PECL/PEAR z paczek próba instalacji pdo_oci kończy się komunikatem:

pear/PDO_OCI requires PHP extension „pdo” (version >= 1.0)
No valid packages found
install failed

pomimo:

diabl0@G4:~$ pecl list
diabl0@G4:~$ pecl list
Installed packages, channel pecl.php.net:
=========================================
Package   Version State
PDO       1.0.3   stable
PDO_MYSQL 1.0.2   stable
PDO_PGSQL 1.0.2   stable

I cóż począć? Google :)

Po kilkudziesięciu minutach i wielu próbach trafiłem w końcu na zgłoszenie buga: Bug #9253 Unable to install PDO_OCI w którym w końcu znalazłem konkretne i przydatne informacje. A więc do rzeczy i pracy.

Po próbach z pecl miałem już ściągnięte źrudła w /tmp/pear/download/PDO_OCI-1.0

InstantClient pobrany z http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linux-amd64.html (taką mam arch, u was może być inna), przy okazji duży minus dla oracla za konieczność rejestracji i brak możliwości pobrania tego przez lynx/wget. InstantClient wrzucony do /usr/local/instantclient, podobnie jak i SDK. Dodatkowo od razu linkujemy sobie /usr/local/instanclient/libclntsh.so.10.1 do /usr/local/instanclient/libclntsh.so

W /etc/ld.so.conf dopisujemy linijkę /usr/local/instantclient i odpalam:

root@G4:/etc# ldconfig
root@G4:/etc#

Po tych „wstępnych” zabiegach przechodzimy do najważniejszego – modyfikacji pliku configure

U mnie niestety nie zadziałał zamieszczony tam diff, ale ręczna edycja poszła prosto i szybko. Poprawiony diff: pdo_oci configure diff działający z 1.0

diabl0@G4:/tmp/pear/download/PDO_OCI-1.0$ phpize
diabl0@G4:/tmp/pear/download/PDO_OCI-1.0$ patch configure pdo_oci_configure.diff
diabl0@G4:/tmp/pear/download/PDO_OCI-1.0$ ./configure --with-pdo-oci=instantclient,/usr/local/instantclient,10.1.0.5
diabl0@G4:/tmp/pear/download/PDO_OCI-1.0$ make
diabl0@G4:/tmp/pear/download/PDO_OCI-1.0$ make test
root@G4:/tmp/pear/download/PDO_OCI-1.0$ make install

I, jeśli nic się po drodze nie wydarzyło, to mamy gotowy działający moduł pdo_oci.so gotowy do podłączenia w php.ini i używania.

Na koniec dwie „małe” ważne uwagi:

  1. kompilując własne PDO niestety musimy także kompilować wszystkie biblioteki z zestawu PDO których używay (czyli np. PDO_MYSQL, PDO_PGSQL itp.)
  2. jeśli przy aktualizacji systemu zaktualizowane zostało PHP, to musimy od nowa przekompilować cały zestaw PDO. Upierdliwe, ale nie można o tym zapominać gdyż bez rekompilacji przestanie nam działać PDO_OCI.

Tags: , , , , , ,

2 Responses to “Debian, PDO i Oracle (pdo_oci)”

  1. [...] Garść informacji dostępna także na blogu Diablo. [...]

  2. calder pisze:

    Z tego co widzę to ten bug ma status OPEN już 3 lata! Niezly support ma ten moduł pdo_oci :/

Leave a Reply