Conoce el servidor web integrado en PHP, con el que puedes generar un servidor útil para la etapa de desarrollo de aplicaciones y sitios web. Cómo configurar el servidor integrado de PHP para adaptarlo a tus necesidades.
En el Manual de PHP hemos abordado diversos artículos centrados en la creación de un entorno de trabajo que nos facilite la ejecución de PHP en local. De hecho encontraras mucha información en este sentido y diversas alternativas que te pueden venir bien en el artículo con la Guía definitiva para crear tu entorno de desarrollo para PHP, que te hace un resumen global de todas las alternativas que dispones para cubrir este requisito.
En esta ocasión vamos a abordar una nueva alternativa, posible desde las versiones más tardías de PHP 5 (a partir de PHP 5.4 lo tienes disponible) y por supuesto en todas las versiones del más moderno PHP 7. Se trata de usar el servidor web integrado en la propia instalación de PHP, que nos dispensa de la necesidad de disponer de cualquier otro software de servidor web. Es muy sencillo de usar, simplemente con un comando de consola.
Para los usuarios con alguna experiencia que quieran ahorrarse la la lectura de más texto, vamos a comenzar justamente con el comando necesario para lanzar este servidor integrado.
Ojo: este comando lo tienes que lanzar desde la carpeta donde quieras servir la web, es decir, desde lo que sería el "Document Root" del servidor web que vamos a iniciar.
php -S localhost:8080
Esto nos dará como salida toda la información que necesitamos para saber cómo acceder a este servidor web local que se ha arrancado.
Luego explicaremos con más detalle este comando para los que deseen alguna información extra.
Cuándo se recomienda usar el servidor integrado en el ejecutable de PHP
Primero habría que aclarar que el servidor integrado de PHP es una alternativa únicamente adecuada para entorno de desarrollo. Es un servidor limitado que no se recomienda usar en un entorno de producción. Es decir, lo puedes usar para desarrollar pero no para un servidor público al que vayan a conectarse los usuarios finales.
Dicho eso, cabe decir que existen muchas alternativas como servidor de desarrollo. Nunca esta de mas tener donde escoger, pero quizás puedan ser tantas posibilidades que puedan despistar a más de uno. Para aclarar este punto es interesante la lectura del artículo mencionado, la guía completa de creación del entorno PHP.
El servidor integrado de PHP que nos ocupa en este momento, podría ser la opción más elemental, la más básica. Aunque tiene una ventaja importante que enseguida vamos a relatar, es justo decir que no siempre va a satisfacer todas las necesidades. Básicamente queremos remarcar este punto porque, para la mayoría de aplicaciones donde podamos llegar a usar PHP, necesitaremos de una base de datos y este entorno solamente nos ofrece un servidor web. Cierto es que podríamos llegar a ejecutar SQLite, pero generalmente vamos a necesitar alguna base de datos más avanzada, como podría ser MySQL.
Por tanto, si deseas tener un entorno más completo, seguirá siendo interesante acudir a un instalador "todo en uno" como Xampp, Mamp o Ampps, que ya te incluye MySQL y algunos softwares interesantes para administrar la base de datos, como PhpMyAdmin.
Ventaja del servidor web integrado: tu propio dominio local para desarrollo
Lo más atractivo de esta solución para servir tu web en la etapa de desarrollo es que tienes la posibilidad de usar cualquier carpeta de tu ordenador como si fuera un dominio propio.
Me explico. Si usas Xampp (sin configurar un virtualhost) las rutas de tus proyectos serán algo como esto:
http://localhost/proyecto1
http://localhost/proyecto2
Sin embargo, con el servidor web integrado podrás usar la web sin necesidad de indicar la carpeta donde está el proyecto, simplemente con:
http://localhost:8080
Esa URL sería como la home de un dominio y te dispensa de usar el nombre de la carpeta donde está el proyecto, porque al arrancar el servidor puedes escoger la carpeta que deseas como document root. En la parte de explicación de los comandos podrás encontrar más información sobre esto. De este punto también se deriva que podrás acceder a tu web desde otros dispositivos, como también te explicaré más adelante en este artículo.
En resumen, recomendamos el Built-in web server de PHP cuando solamente necesites ejecutar cierto código que tengas en alguna carpeta, de una manera rápida, ya que te ahorra la configuración de un servidor web. Dicho de otro modo, no necesitas instalar ningún software adicional en tu sistema, aparte del propio PHP.
Es un recurso interesante que los desarrolladores PHP deberían conocer, aunque no siempre parezca la mejor opción como entorno. No cabe duda que resulta muy útil y es de agradecer que esté disponible, como un recurso más en nuestra línea de comandos. Además, lo cierto es que viene muy bien para las personas que están aprendiendo y viene muy bien poder acceder fácilmente a una web desde otros dispositivos, como ordenadores o móviles que estén en la misma red.
Como usar el servidor integrado de PHP
Para los que necesiten alguna ayuda extra para lanzar este servidor web, aquí van unas indicaciones extra.
Usuarios de Windows
Lo primero para los usuarios de Windows sería decir que se provean con algún software avanzado de terminal. El antiguo "cmd" no es lo más adecuado para nuestras tareas como desarrolladores. Te recomendamos Git Bash, Power Shell o Cmder. De entre todos estos, el que yo uso cuando estoy en Windows es Git Bash, que se instala cuando instalas Git, otra indispensable herramienta.
Para todos los usuarios
Para ejecutar el servidor integrado debes dirigirte en tu terminal de línea de comandos a la carpeta que tengas los archivos que desees servir. Podrás hacerlo con el comando "cd", seguido de la carpeta a la que quieras entrar.
cd mi_carpeta
Una vez dentro, puedes ejecutar el comando "php" para iniciar el build-in server (con unas opciones que veremos en el punto siguiente). Claro que para que te funcione tendrás que haber instalado previamente PHP en tu sistema. Para instalar PHP sigue siendo interesante y rápido que lo hagas a través de algún software tipo Xampp o Ampps. Aunque si estas en Mac podrias usar Mamp o directamente Homebrew o si estas en Linux tu gestor de paquetes de la distribución, como apt-get o similares.
Parámetros para configurar el servidor web integrado en PHP
Nuestro comando para correr el servidor web puede ser configurado con algunos comandos básicos.
Lo más destacable es la elección del nombre del host y el puerto, que se consigue con la opción -S (Fíjate que la "S" es mayúscula).
Con el siguiente comando decimos que el servidor web se arranque en "localhost" y escuche en el puerto 8080.
php -S localhost:8080
C:/xampp/php/php -S localhost:8080
Cuando accedes a una URL y quieres indicar el puerto tienes que colocar ":8080" (o el número de puerto escogido) después del nombre del dominio o la IP. Por ejemplo:
http://localhost:8080
Si el puerto que intentas usar está ocupado, entonces puedes cambiarlo. Por ejemplo:
php -S localhost:8888
Ahora tu web está disponible en:
http://localhost:8888
Acceso desde otros dispositivos
Muchas veces queremos probar una web desde otro ordenador, o desde un tablet o un móvil. Entonces podemos iniciar el servidor indicando nuestra IP de red local. Por ejemplo:
php -S 192.168.0.3:8000
Entonces tendremos acceso al servidor a través de esa IP:
http://192.168.0.3:8000
Si quieres acceder desde otro dispositivo puedes usar esa misma IP. Solo tienes que asegurarte que esa es la IP de tu ordenador en tu red local. Y por supuesto indicar el puerto que hayas usado al arrancar el servidor.
En la siguiente imagen puedes ver cómo estamos accediendo desde el móvil, por medio de una IP de red local al servidor que tengo iniciado en un ordenador. El navegador es Chrome para Android.
Definir otra carpeta como document root
Otra cosa configurable es la definición de la carpeta que se debe usar como "document root", que es la carpeta raíz de tu dominio, donde se encuentra el index.php de la home.
Esa carpeta se define simplemente accediendo a la ruta donde quieras arrancar el servidor con el terminal, haciendo "cd" y el nombre del directorio al que acceder. Pero si lo deseas también puedes definir esta ruta con el parámetro -t seguido del nombre de tu document root a usar.
php -S localhost:8000 -t public/
Solucionando otros posibles problemas
Ten en cuenta que el servidor integrado tendrá una configuración determinada por el php.ini que tengas de manera predeterminada, que puede no ser el mismo que tienes cuando ejecutas PHP vía Apache. Siempre puedes hacer un phpinfo() para saber cuál es el php.ini que se está usando. O incluso podrías darle un php.ini específico con la opción "-c".
php -S localhost:8000 -c php.ini
Quizás está de más detallar este asunto, pero otro detalle es fijarte que estés abriendo correctamente las etiquetas PHP. Si no tienes activada la directiva short_open_tags, debes usar siempre el código de apertura de PHP largo, lo que es siempre una recomendación.
<?php
// Esto es código PHP
?>
Fíjate además que tu archivo PHP está con un juego de caracteres adecuado. La recomendación es siempre usar UTF-8. Esto es importante si estás en Windows, ya que dependiendo del programa que uses para crear el archivo no siempre se usa el juego de caracteres UTF-8.
Conclusión
Creo que con estas opciones tendrás lo suficiente para cubrir tus necesidades de desarrollo. Como decía, el servidor integrado en PHP es una herramienta para tener a mano y es capaz de servir sitios de todo tipo, incluso si son complejos. Por ejemplo lo he probado para un sitio web desarrollado con Laravel y va perfecto. Con WordPress por supuesto también funciona.
Miguel Angel Alvarez
Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...