jueves, 10 de marzo de 2016

Instalar OCI en Windows


Para poder acceder a una base de datos oracle desde php, python en windows necesitas instalar OCI  aquí los pasos para instalar en windows server con IIS.

Debe de tener instalado IIS y php para ver instalar revisar este vinculo.

Instalar PHP en windows IIS

Instalado OCI 12C


1.) Primer paso debe ser instalar el cliente básico de oracle 12C, el cual pueden descargar de Instant Client debe asegurase que debe ser 32 bits, ya que php es 32 bits.

http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

Descargue y des comprima el cliente de oracle 12C 21 bit en :

C:\instantclient_12_1

2.) Agregue esta ruta el path del sistema operativo.

2.1) Panel de control, seleccione System,






2.2) En system ingrese a Advanced System settings

2.3 ) Ingrese a variables de Entorno.



2.4) En la ventana de Variables de ambiente seleccione Path y luego Edit....




2.5) Agregue a la variable path la ruta del cliente de oracle en este caso: C:\instantclient_12_1



Install OCI8


Para acceder a Oracle es necesario OCI8, por lo regular ya esta en las extensiones de php, si no debe de bajarlo de en PECL solo asegúrate que coincida con la versión que estas utilizando y que sea "Non Thread Safe (NTS) x86"

En este caso en la version que descargamos de php ya tenemos la dll de OCI en nuestras extensiones, como el cliente es 12c la dll debería ser: php_oci8_12c.dll



Configurando PHP

 Copiar el archivo php.ini-production a php.ini

1.) Vamos a la carpeta donde esta instalado php en nuestro caso la ruta es:
 C:\Program Files (x86)\PHP\v5.6 

Si fuera otra la puedes consultar en el PHP Manager.

2.) Ahora borra php.ini

3.) Copia el archivo php.ini-production

4.) Cambia de nombre a la copia de php.ini-production a php.ini

Habilitando php_Oci8 en php.ini

5.) Abre php.ini y des comenta las siguientes líneas (quitar el punto y coma):

extension_dir = "ext".

extension=php_oci8_12c.dll


También debe des comentar la línea de date.timezone y configurar para su región, aquí hay un listado para que busque su país. http://php.net/manual/es/timezones.php

date.timezone = America/Los_Angeles

Microsoft Visual C++ 

Debes asegurarte que el Microsoft Visual C++ este instalado tanto el 2010 como el 2012, seguramente ya tienes instalado el 2012 ya que es para que php funcione.

Install Microsoft Visual C++ 2010 Runtime (x86). Necesario para OCI8

Install Microsoft Visual C++ 2012 Runtime (x86). Necesario para php 

Verificando la Instalación

Hay 2 maneras de verificar que la instalación de OCI sea correcta, consola y la pagina php info.

1.) En el command Prompt de windows: 

C:\>php --ri oci8

Si todo esta correcto debe dar un respuesta como esta:




En la pagina de prueba de php donde se incluyo phpinfo también debería mostrar que esta habilitado el oci8




Pagina de prueba.
Crear un pagina con el nombre testoci.php


<?php

$conn = oci_connect('hr', 'welcome', 'mymachine.mydomain/orcl');
$stid = oci_parse($conn, 'select table_name from cat');
oci_execute($stid);

echo "<table>\n";
while (($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) != false) {
    echo "<tr>\n";
    foreach ($row as $item) {
        echo "  <td>".($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;")."</td>\n";
    }
    echo "</tr>\n";
}
echo "</table>\n";

?>

5 comentarios:

Unknown dijo...

Hola, tengo instalado el Oracle Client de 32 bits, pero para una base de datos version 19c. Puedo seguir los mismos pasos para configurar el oci8 en php?

Carlos Juan dijo...

Tiene que ser Oracle Client de 32 bits por que php es de 32bit aun.

Unknown dijo...

Si, mi cliente es de 32 bits. Pero la BD de Oracle no es la 12c, sino la 19c. Por lo que vi funciona igualmente, gracias

Claraiinfanter dijo...

Hola soy Clara, mira que hice todos los pasos para la instalación y desde consola con el comando

php --ri oci8

veo la respuesta igual a la que colocaste en la imagen, pero no veo OCI8 desde phpinfo e hice el ejemplo que tienes y me sale esté error:

Fatal error: Uncaught Error: Call to undefined function oci_connect() in C:\xampp\htdocs\prueba.php:3 Stack trace: #0 {main} thrown in C:\xampp\htdocs\prueba.php on line 3

Por favor ayúdame, que me hace falta?
Si me puedes ayudar te dejo mi correo, claraiinfanter@gmail.com

Alberto corona dijo...

Buenas tardes, disculpa la conexión la puedo hacer desde una pc con windows 10 o es necesario desde un servidor ya que cuando instalo los oci me manda este error Warning: PHP Startup: Unable to load dynamic library 'php_oci8.dll' (tried: ext\php_oci8.dll (%1 no es una aplicaci├│n Win32 v├ílida) ya intente con 32 y varias versiones pero no me saca de ese erro