= 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. [http://php.net/manual/en/function.oci-connect.php 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]