Version 12 (modified by jpo, 4 years ago) |
---|
Instalacja rozszerzenia ORACLE dla PHP
Generalnie całość instalacji przechodzi bez przeszkód, posługując się poniższą dokumentacją
https://help.ubuntu.com/community/Oracle%20Instant%20Client
z tą różnicą że w kilku miejscach nie zgadza się link do biblioteki jeśli serwer ma architekturę i386/i686 czyli 32bit (bo wówczas nazwa katalogu nie jest client64 tylko client.
Pobieramy 3 paczki (basic-client, sdk oraz sqlplus)
Na podstawie powyższej instrukcji wykonujemy następujące kroki. Instalacja pakietu Alien dla przekompilowania pakietów dla Debian Linux.
apt-get install alien
Następnie kompilujemy pakiety
alien -i oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm alien -i oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm
oraz instalujemy
apt-get install libaio1
Pamiętać konieczne o dodaniu ścieżek do /etc/profile. W tym celu należy edytorem np. [vim wiki:AdminGuide/Vim] otworzyć plik /etc/profile oraz do /etc/apache2/envvars i wpisać tam:
ORACLE_HOME=/usr/lib/oracle/12.2/client export ORACLE_HOME LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH export PATH=$PATH:$ORACLE_HOME/bin
Klient już powinien działać, można przetestować:
sqlplus user/passwd@//192.168.1.4:1521/sid
Następnie możemy testować połączenie przez TNS, o ile utworzymy definicję połaczenia TNS:
mkdir -p /usr/lib/oracle/12.2/client/network/admin vim /usr/lib/oracle/12.2/client/network/admin/tnsnames.ora
Do pliku tnsnames.ora należy wpisać dane: CERES zastepujemy nazwą:http://www.orafaq.com/wiki/Tnsnames.ora
CERES = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = SEARS)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = CERES) ) )
Następnie instalacja peclem rozszerzenia php (nie najnowsze bo jest zlinkowane z PHP7):
pecl install oci8-2.0.12 w trakcie należy podać ścieżkę do ORACLE_HOME (tą samą co wyżej w zmiennej ORACLE_HOME) Następnie dodajemy plik z treścią: extension=oci8.so vim /etc/php5/conf.d/20-oci.ini
W niektórych przypadkach może się okazać za samo utworzenie pliku z extension=oci8.so rozszerzenie nie będzie wykorzystywane przez PHP. W takim przypadku należy dodać rozszerzenie w następującej lokalizacji
/etc/php5/cli/conf.d/20-oci.ini /etc/php5/apache2/conf.d/20-oci.ini
Restart apache. W tym momencie powinny działać już przykładowe skrypty php do połączenia z ORACLE. oci_connect.
Po udanym teście można rozpocząć konfigurację źródła ORACLE w eDokumenty.
Prawdopodobnie będziemy chcieli wykorzystać skrypty w zadaniach wsadowych wykonywanych z crontab. W tym celu należy również zadeklarować zmienne w /etc/crontab np:
vim /etc/crontab PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/lib/oracle/12.2/client/bin ORACLE_HOME=/usr/lib/oracle/12.2/client
TROUBLESHOOTING
Patrz wyżej - dokładnie przeczytaj manual z podanego linka i powyższe komentarze.
1. Połączenie działa z przeglądarki ale nie działają wsadowe akcje:
Pierwsze sprawdzamy log /var/log/php_error.log widać błędy: [05-Jul-2017 21:30:02 Europe/Warsaw] [2]: oci_connect(): ORA-12154: TNS:could not resolve the connect identifier specified in /home/edokumenty/public_html/framework/lib/db/OracleManager.inc:110
Uzupełnij w /etc/crontab prawidłowe zmienne środowiskowe ORACLE_HOME i PATH
Poprawność uruchomienia modułu możemy także sprawdzić za pomocą PHPinfo
Alternatywnie może korzystać także z poniższej dokumentacji: https://gist.github.com/hewerthomn/81eea2935051eb2500941a9309bca703