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
4 comentarios:
mUCHISMAS , pero muchisimas gracias!! en serio, llevo horas tratando de configurar esta porquería de oracle para que trabaje con PHP. Y ahora me resultó.
Eso si, tengo una pequeña duda:
en mi phpinfo(); en la seccion de PDO_OCI, solo me aparece el encabezado de la tabla que dice:
PDO Driver for OCI 8 and later enabled
Mientras que en otros pdo, me sale por lo menos una fila con datos, como en:
pdo_mysql
PDO Driver for MySQL enabled
Client API version mysqlnd 5.0.7-dev - 091210 - $Revision: 304625 $
Es esto normal en el pdo_oci?
Nuevamente muchas, gracias y saludos :)
Excelente, muchas gracias, es el mejor que he encontrado despues de tres o mas horas de buscar y de instalar y desinstalar. Muchas gracias :) !
Sí, es correcto, debe salirte únicamente:
PDO_OCI
PDO Driver for OCI 8 and later enabled
Muchas gracias por su aporte. Excelente explicación me funciono perfecto!!!
Publicar un comentario