jueves, 6 de octubre de 2011

Instalado PHP 5.3.8, APC, Xdebug, Memcached, PHPUnit en Windows 7 Ultimate con Microsoft-IIS 7.5

Este post es inicialmente una actualización al post anterior en el que instalé PHP 5.3.5 y una referencia a la instalación de memcached ya que la versión de PHP no es importante en esta última.

Mi actualización a PHP 5.3.8 fue muy simple, tomó unos 5 minutos en total, simplemente desinstalé la versión anterior de PHP desde el panel de control e instalé 5.3.8 (http://windows.php.net/download/) siguiendo los mismos pasos de la versión anterior, la única diferencia es que actualicé la versión de xdebug (http://www.xdebug.org/files/php_xdebug-2.1.2-5.3-vc9-nts.dll), usé "Beyond Compare" para comparar el archivo php.ini anterior y el nuevo para mantener los valores de mi configuración anterior, teniendo en cuenta que debí cambiar la dll de Xdebug, luego de copiar las dll de APC, Memcached y reiniciar IIS, todo funcionó perfectamente.

Para instalar PHPUnit debo instalar PEAR por lo que abrí una ventana de comandos en la carpeta de instalación de PHP para ejecutar el archivos "go-pear.bat" (me parece que hacer doble clic sobre el archivo habría funcionado igual).
Lo primero que me pregunta es; si quiero instalarlo en el sistema o local, seleccioné local para evitar archivos o configuraciones fuera de lugar.
Ahora tengo una lista de opciones para cambiar la ubicación de diferentes elementos de la instalación, de estos voy a cambiar las opciones 2 y 3 que son directorios de archivos temporales para que apunten a "C:\Windows\Temp" (aunque bien podría dejarlos como están), también cambié la opción 9 "Public Web Files directory" que debe apuntar a mi carpeta raíz del sitio en el IIS. Para cambiar estas opciones intenté hacerlo una por una pero parece que no funciona bien así que escribí "all" para editarlas todas dejando las opciones por defecto para las que no quería modificar y al final ENTER para iniciar la instalación.

Relamente no fue mucho el trabajo del instalador, solo descargó unos paquetes y creó unos archivos, además me salieron unos *WARNING* que no entendí muy bien, pero al final dice "The 'pear' command is now at your service", para verificar escribí el comando "pear" en la ventana de comandosy efectivamente parece funcionar.

Ahora los comandos iniciales:
pear channel-discover pear.phpunit.de  
pear channel-discover components.ez.no  
pear channel-discover pear.symfony-project.com  
pear install phpunit/PHPUnit
Pero al ejecutar: "pear channel-discover pear.phpunit.de" extrañamente dice: "Channel "pear.phpunit.de" is already initialized"
Ahora me doy cuenta de que alguien instaló PEAR en el sistema sin usar la opción "local" (tal vez fui yo), la solución es eliminar las referencias a esa instalación porque estaría usando la incorrecta, lo que debo hacer es editar el registro de windows; y como en las versiones anteriores, se usa la herramienta "regedit" que se puede abrir usando la opción "Ejecutar" o buscando en el menú Inicio.

Dentro del regedit se buscan las claves de PEAR dentro de la ruta: HKEY_CURRENT_USER/Enviroment y se eliminan, no está demás advertir que se debe tener cuidado al manipular el registro.

Ahora debo ejecutar los comandos anteriores haciendo una limpieza básica solo para estar seguros:
pear clear-cache
pear update-channels
pear channel-discover pear.phpunit.de  
pear channel-discover components.ez.no  
pear channel-discover pear.symfony-project.com  
pear install phpunit/PHPUnit
Otro inconveniente: al ejecutar la intalación de PHPUnit PEAR muestra muchos mensajes como este:
phpunit/PHPUnit requires PEAR Installer (version >= 1.9.3), installed version is 1.9.0

Aunque mi PHP es la última versión parece no contener el última de PEAR. Esto parece de no acabar, pero solo hay que actualizar PEAR y para eso se usar PEAR, ¡si! se actualiza él mismo con un solo comando y solo necesito saber el número de la versión que quiero (actualmente 1.9.4), también ejecuté los comandos anteriores:
pear install PEAR-1.9.4
pear clear-cache
pear update-channels
pear channel-discover pear.phpunit.de  
pear channel-discover components.ez.no  
pear channel-discover pear.symfony-project.com  
pear install phpunit/PHPUnit
Según el resultado ya tengo instalado PHPUnit y veo una carpeta PHPUnit dentro de la carpeta PEAR de mi instalación de PHP, pero ¿cómo se puede estar seguro? voy a hacer algún archivo muy simple para probar, pero primero debo asegurar que los archivos/paauetes/clases de PEAR sean encontrados por PHP y para eso modifiqué una línea de mi php.ini así:
include_path = ".;C:\Data\Dev\php5.3.8\PEAR"
Ahora a crear un archivo de prueba:
<?php
 require_once ('PHPUnit/Autoload.php');
 class RemoteConnectTest extends PHPUnit_Framework_TestCase {
  public function setUp(){ }
  public function tearDown(){ }
  public function testFalseIsValid() {
   $this->assertTrue( false !== false );
  }
  public function testTrueIsValid() {
   $this->assertTrue( false === false );
  }
 }
?>
Con el archivo listo lo puedo "ejecutar" desde la consola:
C:\Data\Dev\php5.3.8>phpunit C:\Data\Dev\Desarrollo\test.php
PHPUnit 3.5.15 by Sebastian Bergmann.

F.

Time: 0 seconds, Memory: 3.75Mb

There was 1 failure:

1) RemoteConnectTest::testFalseIsValid
Failed asserting that <boolean:false> is true.

C:\Data\Dev\Desarrollo\test.php:7

FAILURES!
Tests: 2, Assertions: 2, Failures: 1.
(Es una buena idea agregar el carpeta de instalación de PHP al PATH del sistema para usar php, pear y phpunit desde cualquier y en cualquier momento, en mi caso es C:\Data\Dev\php5.3.8)

A pesar de ser un ejemplo muy simple espero que sea el punto de partida para mejorar mi desarrollo un poco y adquirir una sana adicción a las pruebas.

No hay comentarios:

Publicar un comentario