29 de marzo de 2016

Instalar Soporte SHH para PHP en Windows

Para instalar soporte SSH para PHP, se requiere conseguir la extensión de PECL (Librerías de extensiones de PHP comunitarias) llamada SSH2 para Win32.

Esta extensión le permite a PHP efectuar operaciones bajo una conexión Telnet segura (SSH) y es esencial cuando necesitamos hacer tareas de deployment.

La instalación de SSH2 requiere de dos librerías: OpenSSL y libssh2.

A continuación explicaremos el proceso de instalación manual de SSH2 para Windows (Win32) a partir de archivos previamente compilados.

Descarga del componente SSH2

La extensión SSH2 compilada se puede descargar desde: http://windows.php.net/downloads/pecl/releases/ssh2/0.12/, donde encontrarás una lista de archivos tanto para sistemas Windows de 64bits como 32bits, en este caso el archivo ZIP descargado es:

  • php_ssh2_0.12-5.3-ts-vc9-x86.zip

La abreviatura ts significa Thread Safe y nts significa Thread Safe. El número '-5.3-' señala la versión de PHP con la cual es compatible, esto es importante, la versión de PHP que tengas instalado debe coincidir con la versión de este archivo, sino no funcionará la extensión.

Instalación de SSH2 en Windows

Primero debemos DETENER todos los servicios de WAMP, esto se hace desde la consola de WAMP.

Al descomprimir el archivo ZIP descargado, no encontraremos con estos archivos:

  • libss2.dll
  • LICENCE
  • php_ssh2.dll
  • php_ssh2.pdb

Los dos últimos archivos son extensiones PECL para PHP, en consecuencia, necesitamos conocer en que carpetas se guardan las extensiones de PHP.

En el caso de WAMPP, las extensiones de PHP se guardan en el directorio:

C:\wamp\bin\php\php5.3.8\ext\

A ese directorio debemos copiar el archivo php_ssh2.dll y php_ssh2.pdb.

El archivo libss2.dll se debe copiar en los directorios:

C:\wamp\bin\php\php5.3.8\
C:\wamp\bin\apache\Apache2.2.21\bin\

El paso siguiente, modificar el archivo de configuración de PHP que lee WAMP este se localiza en:

C:\wamp\bin\apache\Apache2.2.21\bin\php.ini

Ubicar la zona de texto en el php.ini posterior al título “Dynamic Extension” e incluir la línea:

extension=php_ssh2.dll

Guardado el archivo anterior, ahora necesitamos hacer disponible este componente desde la línea de comandos de PHP (PHP CLI), para tal efecto hay que modificar un segundo archivo ‘php.ini’, esta vez el archivo ‘php.ini’ que se encuentra en:

C:\wamp\bin\php\php5.3.8\php.ini

Finalmente, se deben reiniciar WAMP para que los cambios tomen efecto, aunque a mi me funcionó después de reiniciar el computador.

Conclusión

El proceso es sencillo, sólo hay que tener cuidado en descubrir cual es la versión de PHP que está actualmente usando nuestro servidor WAMP. Chequear lo anterior es simple, hay que crear en el directorio de publicación de WAMP un archivo de nombre ‘phpinfo.php’ (puede ser cualquier nombre pero con la extensión ‘php’) con el código:

<?php phpinfo();

Luego ejecutarlo desde el navegador con la url:
http://127.0.0.1/phpinfo.php

Aún existe un problema con SSH2, pues las compilaciones de esta extensión para Windows actualmente (2016) sólo llegan hasta la versión de PHP 5.5. Sin embargo, hay una alternativa llamada phpseclib pure php ssh2.

El contar soporte SSH en PHP es una valiosa ayuda al momento de programar script con tareas de automatización que deben ejecutarse en servidores remotos.

Referencias

Fuente del componente PECL: http://pecl.php.net/package/ssh2
Homepage de la librería SSH2: https://www.libssh2.org/
Repositorio en Github de SSH2: https://github.com/libssh2/libssh2
Homepage de WAMP: http://www.wampserver.es/
SSH2 sobre WAMP en 64bit: http://forum.wampserver.com/read.php?2,131798