miércoles, 7 de noviembre de 2007

IIS7 y php5 en windows vista : Oci8

La version de windows Vista profesional tiene la posibilidad de activar el servidor internet information services 7. Nuestra idea es Configurarlo para que podamos usar php y acceder a oracle mediante oci.

Instalación IIS 7 :

1) Panel de control / Programas / Activar o desactivar Características de Windows
2) buscamos el IIS y selecionamos las caracteristicas que necesitemos. Al menos debemos marcar en Caracteristicas de desarrollo de aplicaciones las opciones de "Extensiones Isapi" y "filtros ISAPI"
3)Si mas adelante necesitamos alguna otra característica podremos añadirla del mismo modo sin problema ninguno.

Instalacion de php:

1) bajamos php de http://www.php.net/downloads.php . Yo he usado la que viene con el instalador.
2)Ejecutamos la instalación y durante la misma se nos preguntarán si queremos instalar php para algun servidor web, seleccionamos isapi para IIS.
3) En la selección de módulos escogemos al menos la extensión oracle8. No es conveniente instalar todos los módulos ya que muchos tienen dependencias externas, y dará error al ejecutar php. En el futuro podemos instalar nuevos módulos a través de Panel de control/"Programas y caractreristicas"/php 5.X.Y/botón derecho / cambiar.

Probando PHP:
1) inicio/ejecutar/php y le damos a aceptar
2) Nos saldrá un error: "no se encontró OCI.dll" y un "unable to load dynamic library php_oci8.dll". Esto es debido a que faltan algunos archivos porque no tenía instalado oracle en este ordenador.

Instalación del INSTANT CLIENT de oracle
1) descargamos el instant client de oracle: http://www.oracle.com/technology/tech/oci/instantclient/index.html . Yo escogi la versión Basic
2) La descomprimimos por ejemplo en c:\oracle
3) Añadimos "c:\oracle" a la variable de entorno "PATH". Para ello Inicio/equipo/boton derecho/propiedades/Configuración Avanzada del sistema/opciones Avanzadas/Variables de Entorno. Debemos editar la variable "PATH" que se encuentra en las "Variables del Sistema", no en las "Variables de usuario". Si metemos la ruta en las de usuario se cargara oci en una ventana de consola pero no en IIS, ya que es un servicio.
4) ejecutamos de nuevo php y no debería salir de nuevo el error. Si sale habria que probar a revisar que se haya escrito correctamente el path y a reiniciar el ordenador.

Si tenemos oracle instalado en el ordenador, no hace falta bajar el instant client, únicamente añadiriamos la ruta de las librerias de Oracle al path.Tal y como hicimos en el paso 3, las librerias suelen estar el subdirectorio lib de oracle que debería tener la oci.dll.

Configurando IIS para ejecutar php:

1) Ejecutamos el IIS Manager (inetmgr.exe)
2) Nos vamos a "Filtros ISAPI", le damos a agregar. En nombre de filtro ponemos lo que queramos y en ejecutable "C:\Program Files\PHP\php5isapi.dll" (o la ruta donde lo instalamos)
3)Volvemos atrás y pulsamos "Restricciones de ISAPI y CGI", agregar. En ruta de acceso ponemos "C:\Program Files\PHP\php5isapi.dll", en descripcion por ejemplo "php5isapi". Y marcamos "Permitir ejecución de la ruta de extensión".
4)Volvemos al menu. Y pulsamos "Asignación de controlador" y luego "Modificar asignación de script". En "ruta de acceso de solicitudes escribimos *.php, en ejecutable C:\Program Files\PHP\php5isapi.dll , en nombre por ejemplo PHP. En el botón de "restricción de solicitudes debemos marcar "invocar controlador solo si..." y "Archivo", en la pestaña verbos, "todos los verbos".

Probamos una página que tenga php y todo debería funcionar bien. En el caso de que podamos ejecutar php en linea de comando pero falle en ISS alguno de lo módulos deberíamos darle permiso al iss para acceder a las carpetas de PHP (C:\Program Files\PHP\) y de ORACLE (c:\Oracle). Para ello.
1) vamos al explorador de windos
2) buscamos la carpeta C:\Oracle
3) botón derecho/propiedades/seguridad/Editar
4) Pulsamos el botón Agregar, y en nombre de objeto ponemos IUSR.Como permisos los fijamos en "lectura y ejecución".

ISUR es el usuario con el que se conecta ISS para peticiones anónimas.Para saber como se llama volvemos al administrador de IIS/Autenticacion. En "Autenticación Anónima", si le damos a modificar aparece el usuario con el que se conecta.

Es probable que slaga un mensaje de error del tipo "IIS Worker Process stopped working". SI miramos en "administracion de equipos/Eventos" . Veremos un aviso cuyo origen es WAS y el id del evento es el 5186. He indica que:
"Un proceso de trabajo con el Id. de proceso de '688' que sirve al grupo de aplicaciones 'DefaultAppPool' se cerró por inactividad". Para evitar que salga nos vamos de nuevo al ISS y en "grupo de Aplicaciones" modificamos "DefaultAppPool" .

1 comentario:

Santiago dijo...

muy bueno el articulo!