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:
- 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.)
- 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: debian, instantclient, Linux, oracle, pdo_oci, pecl, PHP
[...] Garść informacji dostępna także na blogu Diablo. [...]
Z tego co widzę to ten bug ma status OPEN już 3 lata! Niezly support ma ten moduł pdo_oci :/