Sobre la instalación del instant client de Oracle, y el módulo oci8 hay más información en el siguiente post:
- Instalación del Oracle Instant Client y configuración de Oci8 en php y apache en Suse
Nos centraremos exclusivamente en la instalación del PDO_OCI, ejecutaremos los siguientes pasos como root:
1- Obtener extensión y descomprimir
wget http://pecl.php.net/get/PDO_OCI
tar zxvf PDO_OCI
cd PDO_OCI-1.0/
phpize
2- Fijar el directorio del home de oracle ( en el caso de que no esté definido)
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
3-Creamos unos enlaces (el configure da problemas si no están) para la versión de 64 bits
ln -s /usr/lib/oracle/11.2/client64 /usr/lib/oracle/11.2/client
ln -s /usr/include/oracle/11.2/client64 /usr/lib/oracle/11.2/client/include
4-Parcheamos para la versión 11.2 los archivos añadiendo en secciones similares las siguientes líneas (el número de linea es orientativo). De forma alternativa podemos sustituir la cadena de texto 10.2 por 11.2 Esto soluciona el error :Configure: error: Unsupported Oracle version! 11.2
Archivo config.m4:
Línea 10
elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.11.2; then
PDO_OCI_VERSION=11.2
Línea 125
11.2)
PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)
;;
Archivo configure:
Línea 5492:
11.2)
case clntsh in
c|c_r|pthread*) ;;
*)
if test "$ext_shared" = "yes"; then
PDO_OCI_SHARED_LIBADD="$PDO_OCI_SHARED_LIBADD -lclntsh"
else
case clntsh in
c|c_r|pthread*) ;;
*)
LIBS="$LIBS -lclntsh"
;;
esac
fi
;;
esac
;;
5- Para Solucionar el errores:
Cannot find php_pdo_driver.hEjecutaremos lo siguiente:
mkdir includePara el error
ln -s /usr/include/php5/ include/php
pdo_oci.c:34:1: error: unknown type name 'function_entry'Editamos el archivo pdo_oci.c y cambiamos el function_entry por zend_function_entry
6- Ejecutamos el configure, compilamos e instalamos ( no debería salir mensaje de error)
./configure --with-pdo-oci=instantclient,/usr,11.27- Añadimos el módulo a php
make && make install
echo extension=pdo_oci.so > /etc/php5/conf.d/pdo_oci.ini8- Reiniciamos apache
rcapache2 restart
9- Verificamos que se ha cargado correctamente con alguno de los siguientes comandos para listar los módulos cargados:
php -m | grep -i PDOo directamente un phpinfo desde el navegador:
php -r "phpinfo();" | grep -i PDO_OCI
