- Baixar os arquivos da oracle:
BASIC
(instantclient-basic-linux.x64-19.3.0.0.0dbru.zip)SDK
(instantclient-sdk-linux.x64-19.3.0.0.0dbru.zip)
- Quando testei este tutorial os pacotes estavam na versão -
19.3.0.0.0
- Instalar os seguintes pacotes no ubuntu
sudo apt install build-essential
sudo apt install php-dev php-pear libaio1
A instalação do Instant Client necessita de algumas variáveis de ambiente para poder enxergar a biblioteca. Editar o seguinte arquivo:
/etc/environment
# Oracle Instant Client
LD_LIBRARY_PATH="/usr/local/lib/instantclient_19_3"
TNS_ADMIN="/usr/local/lib/instantclient_19_3"
ORACLE_BASE="/usr/local/lib/instantclient_19_3"
ORACLE_HOME=$ORACLE_BASE
cd /usr/local/lib
unzip ~/Downloads/instantclient-basic-linux.x64-19.3.0.0.0dbru.zip
unzip ~/Downloads/instantclient-sdk-linux.x64-19.3.0.0.0dbru.zip
sudo ln -s /usr/local/lib/instantclient_19_3/libclntsh.so.19.1
/usr/local/lib/instantclient_19_3/libclntsh.so
sudo pecl install oci8
instantclient,/usr/local/lib/instantclient_19_3
sudo vi /etc/php/7.2/mods-available/oci8.ini
extension=oci8.so
sudo phpenmod oci8
sudo /etc/init.d/apache2 restart
- Se tudo foi instalado corretamente uma tabela no
phpinfo();
deve aparecer chamadaOCI8
com as informações do driver. - É possível testar se o módulo oci8 foi carregado com o seguinte comando:
php -m | grep 'oci8'
Quando executar comandos com php via linha de comando, pode surgir a seguinte mensagem de erro:
PHP Warning: PHP Startup: Unable to load dynamic library 'oci8.so' (tried: /usr/lib/php/20170718/oci8.so (libmql1.so: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/oci8.so.so (/usr/lib/php/20170718/oci8.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
Isso acontece porque a variável LD_LIBRARY_PATH não foi exportada para o bash. Para corrigir isto basta exportar a variável:
export LD_LIBRARY_PATH="/usr/local/lib/instantclient_19_3"
Isto só funciona na sessão atual do bash. Para tornar a solução definitiva adicione o código acima no final do arquivo ~/.bashrc
Talvez a variável LD_LIBRARY_PATH não seja exportada para o apache. Para corrigir isto basta criar o seguinte arquivo:
sudo vi /etc/ld.so.conf.d/apache_oci.conf
Adicione o seguinte conteúdo ao arquivo:
/usr/local/lib/instantclient_19_3
Execute o seguinte comando para carregar a nova configuração:
sudo ldconfig
Talvez seja necessário reiniciar o apache:
sudo /etc/init.d/apache2 restart
https://help.ubuntu.com/community/PHPOracle
https://pecl.php.net/package/oci8
https://gist.github.com/hewerthomn/81eea2935051eb2500941a9309bca703
https://serverfault.com/questions/201709/how-to-set-ld-library-path-in-ubuntu