Questo di installare PHP e Oracle è un compito piuttosto ingrato perché ogni volta trovo delle novità. Come regola aurea non utiizzo PECL (PHP Extensions Communiti Library) perché qualcosa va regolarmente storto. Scarico i sorgenti della Oracle Call Interface (oci) e compilo a mano: funziona e si fa prima
$ mkdir ~/Scaricati/php/ & cd ~/Scaricati/php/ $ wget https://pecl.php.net/get/oci8-2.2.0.tgz $ tar -xzvf oci8–2.2.0.tgz $ cd oci8–2.2.0 $ phpize $ ./configure — with-oci8=instantclient,/usr/lib/oracle/12.2/client64/lib ... $ make $ sudo make install
Per non modificare altri parametri di configurazione, sostituisco il file oggetto appena ottenuto al posto di quello di riferimento
$ sudo mv /usr/lib/php/20190902/oci8.so oci8.so.old $ sudo cp modules/oci8.so /usr/lib/php/20190902/
Ora configuriamo Apache perché carichi questa libreria: non serve (come scritto in altri tutorial) modificare i file /etc/php/7.4/*/php.ini, ma è sufficiente aggiungere il modulo nella directory /etc/php/7.4/mods-available:
$ less /etc/php/7.4/mods-available:/oci8.ini ; configuration for php OCI8 module ; priority=20 extension=/usr/lib/php/20190902/oci8.so
Ultimo passaggio: modificare le variabili di ambiente di Apache perché ritrovi le librerie:
$ sudo nano /etc/apache2/envvars ... [Aggiungere] export PATH=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/marcob/Scaricati/php/oci8-2.2.0/modules:/usr/lib/oracle/12.2/client64:/usr/lib/oracle/12.2/client64/lib export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client64/lib #export ORACLE_HOME=/usr/lib/oracle/12.2/client64
A questo punto riavvio il servizio
$ sudo service apache2 restart $
E provo a far girare lo script che doveva leggere SYSDATE da una istanza Oracle e stamparlo su una pagina web:
SQL = select sysdate from dual PRM = marcob/marcob@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=orahost.myserver.it)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=oradb)(SERVER=DEDICATED))) Oracle correctly connected! /var/www/html/oracle/index.php:8: array (size=1) 0 => array (size=1) 'SYSDATE' => string '06-FEB-20' (length=9)
Per fare un po’ di sintesi, tre sono le directory importanti per il funzionamento di questa estensione:
Path | File |
/usr/lib/oracle/12.2/client64/lib | Instant client nativi Oracle |
/usr/lib/php/20190902/ | libreria Oracle client compilata |
/etc/php/7.4/ | configurazione per agganciare il client ai comandi (riga di comando, Apache, Fast CGI) |
E anch’io termino con un bel
Commenti recenti