se puede tener OCI y ODBC en PHP

Imagen de Amakema

Forums: 

Saludos, amigos

quiero saber lo siguiente, yo configure un centos 4 con php 5 y librerias OCI, pero el programador de php me pidio tener tambien odbc x q tiene una base en access y quiere recuperar datos de esa base, la pregunta se puede mantener los dos en el servidor.

Por la ayuda muchas gracias.

Atte,

Amakema :)

A primera vista, OCI y ODBC

Imagen de a_villacis

A primera vista, OCI y ODBC deberían poder coexistir sin problemas en el servidor CentOS. Pero la información que provee usted en la pregunta apunta a un problema más grave.

Usted menciona que el programador PHP requiere "access" porque quiere recuperar datos de esa base. Si por "access", usted NO se refiere a Microsoft Access (un archivo con extensión .MDB), puede ignorar el resto de este comentario.

Si por el contrario, la intención es la de usar un archivo creado con Microsoft Access (.MDB), debe usted saber que el controlador ODBC para leer archivos de Microsoft Access es exclusivo de Microsoft Windows, y que no puede hacerse funcionar bajo ninguna versión de Linux (incluyendo CentOS). Tampoco se puede usar Wine para este propósito porque Wine sólo serviría para una aplicación Windows que trata de usar el ODBC nativo de Linux (unixODBC) con controladores ODBC para Linux, y usted quiere hacer lo contrario (PHP, que está compilado para Linux, que haga uso de un posible controlador ODBC para Windows).

Existe un proyecto llamado MDBTools, el cual puede leer (pero no escribir) archivos MDB de Microsoft Access. Sin embargo, este proyecto pareciera estar estancado. Aparte de eso, podría usted hacer lo siguiente:

  1. Informarle a su programador que usted requiere instalar en una plataforma Linux donde Microsoft Access no está soportado, y pedirle que migre el código a una base de datos distinta. Dos sugerencias de base de datos (las más populares) son MySQL y PostgreSQL. Me consta que MySQL tiene una versión instalable en Windows, y puede que PostgreSQL también tenga soporte para Windows. Ya que menciona las bibliotecas OCI (que asumo que indican que usted usa Oracle), podría copiar también los datos de Access a Oracle y usar una sola base de datos.
  2. Usar exclusivamente Windows para ejecutar la aplicación Web. Pero puede que esta no sea una opción adecuada para usted, sobre todo si tiene que exponer la aplicación al Internet.
  3. Construir una aplicación "puente" que se ejecute bajo Windows y tenga acceso a la base de datos de Microsoft Access USANDO MICROSOFT JET, NO ODBC . Esta aplicación (escrita, por ejemplo, en Visual Basic), abriría un puerto de red TCP/IP donde escucharía peticiones en un protocolo que debe ser decidido por su programador (sugerencias incluyen XMLRPC o SOAP, pero no se limitan a ellas), y leería o escribiría a la base de datos de Access según sea necesario. Una vez que tenga esta aplicación puente y que PHP pueda usarla desde Windows, podría hacer una de dos cosas:
    1. Instalar una máquina Windows en la red interna, y exponer el puerto para que el computador con CentOS pueda conectarse a ella.
    2. Utilizar Wine para ejecutar esta aplicación en la misma máquina CentOS (luego de instalar MDAC 2.6 o superior para usar Microsoft Jet), con la condición de que únicamente escuche en localhost, y no en la interfaz externa, para que nadie más pueda siquiera conectarse al puerto expuesto por el puente.

Espero que esto haya sido de utilidad.

perl -e '$x = 2.4; print sprintf("%.0f + %.0f = %.0f\n", $x, $x, $x + $x);'

perl -e '$x = 2.4; print sprintf("%.0f + %.0f = %.0f\n", $x, $x, $x + $x);'