sábado, 12 de febrero de 2011

Instalando PHP 5.3.5 con APC y Xdebug en Windows 7 Ultimate con Microsoft-IIS 7.5

Voy a instalar la última versión de PHP (al día es 5.3.5) en mi Windows 7 Ultimate bajo IIS 7.5.


Muchos me preguntan por qué no uso Apache o XAMPP, la respuesta es: porque me parece que es más eficiente utilizar los elementos nativos del sistema sobre el que trabajo, además tengo la opción de usar .NET en el mismo servidor. Para el caso actual IIS combinado con PHP puede no ser la opción más eficiente pero no es muy importante ya que no es un ambiente de producción, en todo caso haré una comparación en un Blog posterior.

Primero debo activar IIS ya que mi Windows no lo trae por defecto. Para eso voy a: "Inicio/Panel_de_Control/Programas" y la opción "Activar o desactivar las características de Windows" o la forma corta: Oprimir la tecla "windows", escribir "optionalfeatures" y oprimir "Enter", de la ventana que emerge selecciono el elemento "Internet Information Services". Por defecto no se seleccionan todos los elementos contenidos bajo ese menú, solo es importante seleccionar "CGI" en las características de desarrollo para que nos permita instalar PHP en modo FastCGI que es la mejor opción para IIS.


Por el momento no necesito más, así que, clic en aceptar y tras unos segundos IIS está configurado y andando. Para verificar que todo esté andando escribo la URL http://localhost/ en mi navegador, si se ve la imagen de IIS 7 todo está bien.
* En mi caso TeamViewer usaba el puerto 80 y el 443, pero en la configuración avanzada se puede hacer que no use esos puertos.

Cambiar la carpeta de inicio de IIS no es nada complicado, se debe abrir el panel de control de IIS haciendo clic en "Inicio" luego clic derecho en la opción "Equipo" y seleccionado "Administrar", e la ventana que emerge despliego la opción del árbol "Administrador de Internet Information Service (IIS)" o de la forma corta: Oprimir la tecla "windows", escribir "inetmgr" y oprimir "Enter". En la columna "conexiones" busco y selecciono "Default Web Site" para que aparezca la columna "Acciones" en donde hago clic en "Configuración básica...", en la ventana que emerge cambio la ruta de acceso física y clic en aceptar, eso debe actualizar la columna de la izquierda "conexiones" mostrando el contenido de la carpeta que seleccioné como ruta de acceso. En la columna de la derecha "acciones" bajo el grupo "Administrar sitio web" hago clic en "Reiniciar" y listo. Para verificar que todo esté andando escribo la URL http://localhost/ en mi navegador, si se debe listar el contenido de la carpeta la nueva carpeta de inicio.

Descargar PHP para windows de la dirección http://windows.php.net/download/ descargo la versión Installer de "VC9 x86 Non Thread Safe" y lo ejecuto seleccionando "IIS FastCGI" en el momento en que dé la opción, los pasos siguientes los dejé con los valores por defecto.

Crear un archivo de prueba en el directorio raíz de IIS con el nombre phpinfo.php que contenga el siguiente código:
<?php
    phpinfo();

En mi navegador escribo la URL al archivo: http://localhost/phpinfo.php y listo.

Configurando PHP para mi entorno de desarrollo cambié algunos valores en el archivo php.ini que está en la carpeta de instalación de PHP, los elementos cambiados fueron:
short_open_tag = On            ;No me gusta mucho usar <?php pero a veces es necesario
implicit_flush = On            ;Solo en entorno de desarrollo
error_reporting = E_ALL        ;Porque no me gusta ver ningún tipo de "warning"
display_errors = On            ;Sin esto "error_reporting = E_ALL" no tiene efecto
display_startup_errors = On    ;Solo para verificar la instalación de extensiones.
post_max_size = 22M            ;Nunca sobra
upload_max_filesize = 20M
default_charset = "utf-8"      ;Mi opción recomendada
Después de guardar el archivo recargo la página de prueba y veo los cambios hechos.

Instalando XDebug que se descarga desde la dirección http://www.xdebug.org/files/php_xdebug-2.1.0-5.3-vc9-nts.dll, se guarda en la carpeta "ext" dentro de la carpeta de instalación de PHP y luego se edita el archivo php.ini agregando los siguientes dato en cualquier lugar del archivo teniendo en cuenta que solo las que no inician con (;) están activa.
; Enable xdebug extension module
zend_extension="__RUTA_A_LA_INSTALACION__\ext\php_xdebug-2.1.0-5.3-vc9-nts.dll"
xdebug.default_enable=1
xdebug.profiler_enable=0
xdebug.profiler_enable_trigger=1 ;XDEBUG_PROFILE
xdebug.auto_trace=0
xdebug.idekey=devphp
;xdebug.show_local_vars=1
;xdebug.collect_vars=1
xdebug.dump_globals=1
xdebug.dump_once=1
xdebug.collect_params=1 ; Por defecto es 4 pero me parece demasiado
;xdebug.remote_log=C:\php\temp\debug\devphp2.log
xdebug.remote_enable=On
;xdebug.remote_mode=req
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
;xdebug.remote_autostart=1
;xdebug.profiler_enable=1
;xdebug.profiler_enable_trigger=0
;xdebug.profiler_append=1
;xdebug.profiler_output_dir=C:\php\temp\profiler
;xdebug.profiler_output_name=cachegrind.out.%p
;xdebug.trace_output_dir=C:\php\temp\trace
;xdebug.trace_output_name=trace.%c
Se guardan los cambios en el archivo y se debe reiniciar el servidor Web, con el comando "inetmgr". se puede ingresar al administrador de IIS y en la columna de la derecha se hace clic en reiniciar, luego de eso recargo la página de prueba y debo ver algo como esto:


Instalando APC que se descarga desde la dirección http://downloads.php.net/pierre/php_apc-20110109-5.3-nts-vc9-x86.zip se descomprime la dll en la carpeta de extensiones de PHP y se edita el archivo php.ini agreagando lo siguiente en cualquier lugar del archivo:
; Enable apc extension module
extension=php_apc.dll
Puede ser necesario reiniciar el servidor nuevamente, al recargar la página de prueba se puede ver un nuevo bloque así:


Y así se concluye la instalación de PHP, XDebug y APC en IIS 7.5

5 comentarios:

  1. Tengo wampserver y quiero instalar memcahe y apc pero no logro que funcione sabes como podria hacer para comenzar a trabajar.
    logica_razon@hotmail.com

    ResponderEliminar
  2. Amigo te escribe a tu correo porque me respondiste la primera vez , Necesito instalar APC , tengo wampserver 2.0i , quiero tener memcached para poder trabajar.Espero tu respuesta.
    Atte,
    Wilfo M.
    logica_razon@hotmail.com

    ResponderEliminar
  3. Hola Wilfo, tengo un nuevo post que te puede ayudar con el problema. http://nelsondaza.blogspot.com/2011/05/instalando-memcache-para-php-535-en.html

    Saludos,
    Nelson Daza

    ResponderEliminar
  4. Hola, tengo un problema.. Hago todo como dice la guía pero al activar el php_apc en el php.ini el phpinfo me tira error 500 y la web entra en un bucle de re direcciones interminables :S

    ResponderEliminar
  5. Hola Jose, es difícil decir con exactitud cual es tu error a primera vista, es un poco más fácil encontrar el error si se ejecuta PHP desde la consola.
    Primero hay que activar toda la información de errores, para emular un error común cambié mi php.ini con estos valores (NO recomendados para producción)

    error_reporting = E_ALL | E_STRICT
    display_errors = On
    display_startup_errors = On

    Ahora desde la consola se ejecuta el comando: "php -v" para verificar que todo esté correcto.
    El resultados fue el siguiente:
        C:\Data\Dev\php5.3.5>php -v
        PHP 5.3.5 (cli) (built: Jan 5 2011 20:36:18)
        Copyright (c) 1997-2010 The PHP Group
        Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
        with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans

    - Nunca he agregado la ruta de la instalación al PATH del sistema ni he copiado dlls a las carpetas de Windows, por lo que es necesario navegar a la carpeta de instalación del PHP en mi caso "C:\Data\Dev\php5.3.5".
    - En W7 se puede abrir una consola desde el explorador de windows haciendo clic derecho sobre una carpeta mientras se mantiene oprimida la tecla "Mayúsculas" y se selecciona la opción "Abrir ventana de comandos aquí" lo que me ahorra el trabajo de navegar.

    Un error común es que la extensión esté mal incluida en el pnp.ini otro error es que no sea la extensión correcta para la versión de PHP.
    Al cambiar mi php.ini con este error:
    extension = php_apc_errado.dll
    El resultado al ejecutar el comando "php -v" Es una ventana que dice que no se puede encontrar el módulo y describe la ruta que está mal.

        Warning: PHP Startup: Unable to load dynamic library 'C:\Data\Dev\php5.3.5\ext\php_apc_errado.dll' - No se puede encontrar el módulo especificado.

    Cuando se usa una versión que no está de acuerdo con la versión de PHP En micaso es importante que sean NTS, VC9 y x86 pues esas son las características de mi PHP, en caso de instalar una versión diferente los resultados varían pero la descripción de la ventana de error puede darte una idea, ej: el error "El programa no puede iniciarse porque falta php5ts.dll", acá dice que trató de buscar una versión TS de PHP pero la mia es NTS, incluso con una librería VC6 la ventana de error te dará algúna pista.
    Espero ser de ayuda.

    ResponderEliminar