BorrowBits - ciencia y tecnología

Usar el servidor embebido de PHP 5.4

¿Cómo sacar partido al servidor http embebido que traen las nuevas versiones de PHP?

Sé que si te dedicas al desarrollo web como yo tendrás instalado con toda probabilidad en tu ordenador de trabajo algún servidor http más o menos profesional, casi con seguridad basado en apache, como Xampp o Wamp para Windows, Mamp para Mac o el consabido LAMP en Linux.

php-logo

Pero aunque sólo sea para aprender algo nuevo o sencillamente por hacer una instalación o prueba rápida voy a presentarte la posibilidad, si tienes instalado php 5.4 o superior de utilizar el servidor http embebido que lleva incorporado.

Lo primero: es necesario aclarar  que no se trata de un servidor que debamos usar en producción. Aunque a menudo puedes necesitar probar algo en una máquina diferente de la tuya o probar alguna funcionalidad sin afectar a la configuración de los virtualhost de apache de la máquina en cuestión.

Vamos a ver como se haría  y en todo caso la aplicación práctica puede venir  con un uso futuro. Cuando termines de leer este artículo sabrás usarlo, o al menos que existe la posibilidad, aunque no tengas muy claro los propósitos inicialmente.

Para arrancar el servicio, tal y como lo haríamos con un apache, desde el terminal invocaremos la orden php -S localhost:port, siendo localhost  la IP por la que vamos a acceder, si quisieramos que este servicio esté disponible a otros ordenadores de nuestra red en lugar de localhost pondríamos 0.0.0.0

Si tenemos funcionando un servidor apache en el puerto convencional 80 es conveniente lanzar el comando anterior (php -S localhost:port) con un puerto diferente al 80, para no solaparnos con el de apache, en el mejor de los casos no se atenderá la petición correctamente y en el peor podemos dejar al ordenador colgado.

Una vez iniciado veremos la siguiente traza en el terminal:

  PHP 5.4.24 Development Server started at Tue Apr 15 23:43:00 2014
  Listening on http://localhost:8080
  Document root is /Users/joseluislaso/prueba
  Press Ctrl-C to quit.

Una de las ventajas de usar este método es que todas las peticiones que se hagan en el navegador producirán una salida en el terminal con los detalles de la misma.

Por ejemplo si ponemos en la barra del navegador la siguiente direccion: http://localhost:8080 veremos la siguiente traza:

  [Tue Apr 15 23:45:10 2014] ::1:64354 [302]: /
  [Tue Apr 15 23:45:10 2014] ::1:64358 [404]: /favicon.ico - No such file or directory
  [Tue Apr 15 23:45:10 2014] ::1:64359 [404]: /favicon.ico - No such file or directory

Como puedes ver además de lo que se muestre propiamente en el navegador obtendremos de manera inmediata el resultado de lo que hace internamente el servidor de http.

Esto también lo podemos obtener de apache con un tail del log, pero aquí es mucho más rápido y compacto en principio.

Veamos ahora de que manera podemos configurar el comportamiento del servidor embebido.

  • Podemos indicar una carpeta como raiz, simplemente indicándola a continuación:

php -S localhost:8080 /raiz

  • Podemos indicar un script enrutador que hará las veces de .htaccess, de alguna manera antes de servir cualquier archivo se invocará primero el archivo router y se hará lo que ahí se indique.

Un ejemplo de router:

Captura de pantalla 2014-05-08 a la(s) 07.22.17

Fíjate en que el router está filtrando por el tipo de archivo que se le está pidiendo, dando paso tal cual a los archivos de imágenes y añadiendo a la salida un texto en los demás casos. Este es un ejemplo didáctico y su utilidad es bastante nula, en todo caso ten en cuenta que si añadimos a la salida algo antes de enviar una imágen, el flujo de datos hará creer al navegador que la imagen está corrupta, por ello se han exceptuado en el router.

Conclusión

Los usos prácticos de este mini-tutorial quedan de la mano del lector, como ya he dicho te va permitir por ejemplo probar algún proyecto que te hayas clonado de github y al que quieras echar un vistazo sin necesidad de configurar un virtualhost para él.

Recuerda en todo caso que no es un sistema seguro para producción.

Puedes encontrar más información en php.net

jlaso

Empecé mis primeros pinitos en la informática con una calculadora SHARP PC-1500A que consiguió mi padre al adquirir un equipo informático en los años 80.
No he parado desde entonces, pasando por aplicaciones de escritorio hechas en Turbo Pascal, Delphi, Access, Velneo hasta por fin aplicaciones web desarrolladas en PHP y MySQL. De la mano de Symfony 1.4 entré por la puerta grande en la programación orientada a objetos.
Si hay una frase que pueda resumir lo que soy es esta: "Apasionado en el desarrollo web"

2 comentarios

Suscríbete

¡Sácale el máximo partido a BBits!

Introduce tu dirección de correo electrónico para seguir este Blog y recibir por email las nuevas publicaciones, si has leído y aceptas las Políticas de Privacidad, Cookies y Aviso Legal.

Recíbelo gratis al suscribirte

Webs amigas

  • Frikilogia.- Blog Multi-Tematico orientado a todos los campos del frikismo.
  • Meridiem90.tv.- Mira la TV gratis en HD. Canal Plus y Gol TV, todo el futbol desde tu navegador.
  • JITKey.- Startup enfocada en la gestión de alojamientos turísticos.

Bits del pasado

Síguenos en FB