Symfony 1.2 + Propel 1.3 + Oracle
Después de intentar poner el marcha la extensión de PHP5 de PDO_OCI durante dos días, hoy al fin lo he conseguido.
No hay apenas documentación y para más inri, la poca que hay mezcla versiones incompatibles entre si. Ha sido una auténtica aventura ponerlo en marcha.
La configuración del servidor es la siguiente:
- Ubuntu Server 8.10 x86 sobre VMWare
- PHP5 (la versión del repositorio de Ubuntu)
Parte 1: Instalar el driver OCI (oracle) de PDO
Antes de nada debes saber que vas a tener que instalar la extensión PDO y PDO_OCI a mano. Por un lado, la de PDO_OCI no tiene candidatos y si la compilas a mano, resulta que es incompatible con el API de PDO que te instala el repositorio de ubuntu, por lo que al final, la mejor solución es compilar a mano ambas, a partir del repositorio de fuentes de PEAR.
Para instalar PDO solo hay que hacer un "sudo pecl install pdo". Asegúrate de tener instalado el paquete php-pear y el php5-dev porque si no no podrás hacer esto.
Despues de hacerlo, habrás reemplazado la extensión PDO que te viene al hacer un "apt-get install php5" por el de PEAR.
Ahora viene la parte divertida: instalar en el sistema la extensión PDO_OCI. Para ello debes instalar dos cositas de nuestro gran amigo Oracle (http://www.oracle.com/technology/software/tech/oci/instantclient/index.html):
- Oracle Instant Client (library)
- Oracle Instant Client (SDK)
Lamentablemente, solo podrás utilizar las versiones inferiores a la 11 (de la 10.2.0.4 para abajo).
Luego descomprime la librería en /usr/lib/oracle/10.2.0.4/client/lib y el sdk en /usr/include/oracle/10.2.0.4/client
Luego dile al sistema que añada estas rutas con el comando ldconfig y corriges un par de nombres de ficheros:
sudo ldconfig /usr/lib/oracle/10.2.0.4/client/lib
sudo ldconfig /usr/include/oracle/10.2.0.4/client
sudo ln -s /usr/lib/oracle/10.2.0.4/client/lib/libclntsh.so.10.1 /usr/lib/oracle/10.2.0.4/client/lib/libclntsh.so
sudo ln -s /usr/lib/oracle/10.2.0.4/client/lib/libocci.so.10.1 /usr/lib/oracle/10.2.0.4/client/lib/libocci.so
Ahora vamos a descargar las fuentes de PDO_OCI, compilarlas e instalarlas en el sistema:
sudo mkdir /usr/src/pdo_oci
cd /usr/src/pdo_oci
sudo pecl download pdo_oci
sudo tar -zxvf PDO_OCI-1.0.tgz
cd PDO_OCI-1.0
sudo phpize5
sudo ./configure --prefix=/usr --with-pdo-oci=/usr/lib/oracle/10.2.0.4/client
* editar Makefile *
sudo make
sudo make install
Al editar Makefile debéis añadir la ruta a /usr/include/oracle/10.2.0.4/client/include en la directiva "INCLUDES"
Después de esto ya tendréis la extensión instalada en vuestro sistema. Sólo hay que editar /etc/php5/conf.d/pdo.ini y añadir:
extension=pdo_oci.so
Ale, a disfrutar! En el siguiente post explicaré como hacer que todo esto funcione con Propel 1.3 y Symfony, pero antes tengo que averiguar cómo coño se hace T_T.
