Servidor web integrado en PHP

  • Por
Cómo usar el servidor web integrado en PHP como entorno para desarrollo de aplicaciones. Cómo configurarlo 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
Nota: Ten en cuenta que el comando "php" tiene que estar en el PATH. Es decir, debes tener en el PATH de tu sistema la ruta donde está el ejecutable de PHP. Si no es tu caso, tendrías que escribir la ruta completa a donde se encuentre. Imagina que estás en Windows y tienes instalado PHP con Xampp, entonces el comando lo ejecutarías así:
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.

Nota: La IP local la consigues ver con comandos como "ipconfig" o "ifconfig" (Usa el que te valga para tu sistema).

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
Nota: El anterior comando entiende que tienes un archivo php.ini en la carpeta donde has iniciado el servidor. Si no existe ese archivo no te saldrá un error, simplemente será como si ese archivo estuviera pero vacío y por tanto tendrás la configuración predeterminada.

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.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Gary Cano

19/7/2018
Uso de Servidor PHP Integrado
En definitiva esto podria ser una alternativa para no utilizar Apache?

Pablo

26/9/2018
Servidor incorporado en Laravel
Buenos dias, estoy trabajando con Laravel, y cuando escribo el comando "php artisan serve" me levanta un servidor incorporado, es el mismo del que hablas en este articulo?

iLolo

14/10/2018
php artisan serve
Hola,
Es el mismo servidor integrado. Solo que lo lanzas a través de artisan de Laravel.