Como hacer para conectar PHP con Oracle
Un sistema instalado con php funcional
Descargue de oracle el instantcliente. Toca tener el basic y el devel. Ademas instalar el sqlplus es chevere para hacer pruebas de conexion por linea de comandos.
http://download.oracle.com/otn/linux/instantclient/121020/instantclient-basic-linux.x64-12.1.0.2.0.zip
http://download.oracle.com/otn/linux/instantclient/121020/oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
O del ftp local de skina .. que hay una copia inclusive de un *.deb convertido con alien.
Instale los rpms, debs o tar,gz ofrecidos por Oracle y garantice que que ld los vea.
Eso se hace con
rpm -Uvh instant-client*.rpm o dpkg -i instant-client*.deb
Me interesa particularmente realmente las librerias libclntsh.so y libocci.so .
Instale el modulo de pear … php-pear que es una extension de librerias de php
> rpm -Uvh php-pear php-devel
Ahora agregue el modulo de pear que soporta Oracle. Baje la version de oci8 para pear con
pecl dowload oci8 .. o pecl install oci8 (pero a mi on me funciona)
Si No sirve el pear install .. toca bajarlo, descomprimirlo, compilarlo e instalarlo
mkdir -p /usr/local/src
cd /usr/local/src
pear download oci8
tar xzf oci8-1.1.1.tgz
cd oci8-1.1.1
phpize
./configure –with-oci8=shared,instantclient,/opt/oracle/instantclient
make
make install
Para la version 2.0 y con los ultimos instant client es identico solo que el configure es un poco diferente
./configure –with-oci8=shared,instantclient,/usr/lib/oracle/12.1/client64/lib
make
make test
make install
OJO: El phpize esta en php-devel (php5-dev).. y toca instalarlo. Consiste con la version de php que tenga.
– http://php.net/oci8
Centos 7 y PHP 5.4 … pecl install oci8-1.4.10
Debian 9 y PHP 7.3
Para cuando se tenga diferentes versiones de php .. toca hacerlo a mano para cada uno
phpize7.2
./configure –with-php-config=/usr/bin/php-config7.2
make
make install
Apache - PHP
Edit php.ini and enable the OCI8 extension with:
extension=oci8.so
El sistema operativo
Necesita que use la librerias de oracle en /etc/ld.so.conf.d/oracle.conf con el contenido
/usr/lib/oracle/11.2/client64/lib.
Y corra ldconfig
– http://www.oracle.com/technetwork/articles/technote-php-instant-084410.html
Recuerde reiniciar apache
service apache2 restart …. o service httpd restart
Cree un prueba.php con phpinfo() y debes tener
| OCI8 Support | enabled |
| OCI8 DTrace Support | disabled |
| OCI8 Version | 2.0.8 |
| Revision | $Id: f04114d4d67cffea4cdc2ed3b7f0229c2caa5016 $ |
| Oracle Run-time Client Library Version | 12.1.0.2.0 |
| Oracle Compile-time Instant Client Version | 12.1 |
El truco reside en meterle mano al configure del modulo oci8 de pear. Porque solo hay sorpote para 10.1 y no 10.2.
En algunos es necesario hacer
<HTML><blockquote>
ln -s libclntsh.so.10.1 libclntsh.soln -s libocci.so.10.1 libocci.so
</blockquote></HTML> Reportele el directorio a ld con
<HTML><blockquote>
echo /opt/oracle/instantclient >> /etc/ld.so.conf
</blockquote></HTML> o
<HTML><blockquote>
echo "/usr/lib/oracle/10.2.0.3/client/lib" >> ld.so.conf
</blockquote></HTML> Ahora solo basta reconstruir la base de datos de librerias con
ldconfig
- pear download oci8-1.2.0
Me toco buscarlo en tmp y meterle mano a configure para
# OCISDKZIPINC=$PHP_OCI8_INSTANT_CLIENT/sdk/include
OCISDKZIPINC=“/usr/include/oracle/11.1.0.1/client”
y luego correr
./configure –with-oci8=shared,instantclient,/usr/lib/oracle/11.1.0.1/client/lib/
-
Desde Oracle para 5.4 y Oracel 11g
- https://developer.oracle.com/dsl/technote-php-instant.html
Ha sido completada … siguiendo los vinculos
- http://ubuntuforums.org/showthread.php?t=92528 – para oci8 1.1
- http://cofradia.org/modules.php?name=News&file=article&sid=16632
Otras referencias
- http://serverfault.com/questions/209570/setup-oracle-instant-client-on-centos-rhel-linux-for-php-and-perl
FIN
15-Marzo-2006 J.E.Gomez v1.0 Primera version
Advertencia
Este documento es privado y es de uso exclusivo de sus autores y de SKINA TECH. Cualquier uso sin una autorización escrita es contra la ley de derechos de autor y de propiedad intelectual, y será motivo de una acción legal.