Saltar al contenido
instalacion.php · devschool

Instalar PHP y montar un servidor local

Lección 2 de 26 · 12 min de lectura · Actualizado el

En esta lección
  1. Qué necesitas
  2. XAMPP en Windows
  3. Qué es localhost
  4. Alternativas a XAMPP
  5. El servidor integrado de PHP
  6. PHP en la terminal
  7. Configurar VS Code para PHP
  8. Ver los errores mientras programas
  9. phpinfo(): toda la configuración de un vistazo
  10. Subir tu web a un hosting compartido
  11. Errores frecuentes
  12. Resumen

Para ejecutar PHP necesitas un servidor, y no hace falta alquilar uno: puedes montarlo en tu propio ordenador. A ese entorno se le llama servidor local y es donde programarás y probarás todo antes de publicarlo. En esta lección instalarás PHP con XAMPP (o una alternativa), aprenderás qué son htdocs y localhost, ejecutarás PHP desde la terminal, prepararás VS Code y configurarás PHP para que te muestre los errores mientras aprendes.

Qué necesitas

Como viste en ¿Qué es PHP?, un archivo PHP no se abre directamente en el navegador: alguien tiene que ejecutarlo. Para eso hacen falta tres piezas:

  • Un servidor web, el programa que recibe las peticiones del navegador. El más usado con PHP es Apache.
  • El intérprete de PHP, que ejecuta el código.
  • Una base de datos, normalmente MySQL o MariaDB (no la necesitarás hasta la parte de PDO).

Instalar y conectar las tres a mano es engorroso, así que existen paquetes que lo traen todo listo. Al conjunto se le llama pila AMP (Apache + MySQL + PHP); según el sistema verás nombres como WAMP (Windows), MAMP (Mac) o LAMP (Linux).

XAMPP en Windows

XAMPP es el paquete más usado en los institutos. Es gratuito y funciona en Windows, macOS y Linux.

  1. Descárgalo desde apachefriends.org. Elige la versión con el PHP 8 más reciente.
  2. Instálalo en la ruta que propone, C:\xampp. Evita C:\Archivos de programa, porque los permisos de Windows dan problemas.
  3. Abre el XAMPP Control Panel y pulsa Start en la fila de Apache. Si se pone en verde, el servidor está funcionando.
  4. Abre el navegador y entra en http://localhost. Deberías ver la página de bienvenida de XAMPP.

Cuando llegues a las bases de datos, arrancarás también MySQL desde el mismo panel.

Cuidado: si Apache no arranca y el panel dice que el puerto 80 está ocupado, otro programa lo está usando (a veces IIS, Skype o Docker). Cierra ese programa o cambia el puerto de Apache en Config > httpd.conf (Listen 8080) y entra en http://localhost:8080.

La carpeta htdocs

Apache solo sirve los archivos que están dentro de una carpeta concreta, la raíz de documentos (document root). En XAMPP es:

C:\xampp\htdocs\

Todo lo que pongas ahí es accesible desde el navegador. La correspondencia entre carpetas y direcciones es directa:

Archivo en discoDirección en el navegador
C:\xampp\htdocs\index.phphttp://localhost/
C:\xampp\htdocs\pruebas\hola.phphttp://localhost/pruebas/hola.php
C:\xampp\htdocs\tienda\index.phphttp://localhost/tienda/

Si una carpeta contiene un archivo llamado index.php (o index.html), Apache lo muestra cuando pides la carpeta sin nombre de archivo. Por eso http://localhost/tienda/ abre tienda/index.php.

Consejo: crea una carpeta por proyecto dentro de htdocs (htdocs/curso-php, htdocs/gimnasio…). Así no se mezclan los archivos y cada proyecto tiene su propia dirección.

Tu primera página en el servidor

Crea la carpeta C:\xampp\htdocs\curso-php y dentro un archivo hola.php:

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Mi primera página PHP</title>
</head>
<body>
    <h1><?php echo "Funciona"; ?></h1>
    <p>Esta página la ha generado PHP <?= PHP_VERSION ?>.</p>
</body>
</html>

Abre http://localhost/curso-php/hola.php. Verás el título “Funciona” y la versión exacta de PHP que tienes instalada. Si en lugar de eso ves el código o el navegador descarga el archivo, revisa que Apache esté en marcha y que la dirección empiece por http://localhost, no por file:///.

Qué es localhost

localhost es un nombre especial que siempre significa “este mismo ordenador”. Equivale a la dirección IP 127.0.0.1. Cuando escribes http://localhost, el navegador no sale a Internet: se conecta al Apache que tienes instalado.

Detrás del nombre puede ir un puerto, un número que identifica qué programa atiende la petición. Apache usa por defecto el 80 (que no hace falta escribir); otros servidores usan el 8000 o el 8080, y entonces sí se escribe: http://localhost:8000.

Lo que ves en localhost solo lo ves tú. Para que otros vean tu web tendrás que subirla a un hosting, como verás al final de la lección.

Alternativas a XAMPP

HerramientaSistemaPor qué elegirla
XAMPPWindows, macOS, LinuxLa más extendida; es la que suelen usar en clase
LaragonWindowsLigera y rápida; crea direcciones bonitas como http://tienda.test y cambia de versión de PHP con un clic
MAMPmacOS (y Windows)Equivalente a XAMPP con interfaz pensada para Mac
Paquetes del sistemaLinuxsudo apt install apache2 php libapache2-mod-php php-mysql en Ubuntu o Debian
DockerTodosContenedores con la versión exacta que use tu empresa; útil más adelante

Todas hacen lo mismo: Apache (o Nginx) + PHP + MySQL. Elige una y no le des más vueltas.

El servidor integrado de PHP

PHP trae su propio servidor web de desarrollo, perfecto para probar algo rápido sin Apache. Ve en la terminal a la carpeta de tu proyecto y ejecuta:

php -S localhost:8000

Mientras la terminal siga abierta, tendrás tu web en http://localhost:8000. La carpeta desde donde lo lanzas hace de raíz: http://localhost:8000/hola.php abre el hola.php de esa carpeta. Para pararlo, pulsa Ctrl + C.

Si quieres que la raíz sea otra carpeta (por ejemplo, public), indícala con -t:

php -S localhost:8000 -t public

Cuidado: el servidor integrado es solo para desarrollo. No está pensado para aguantar visitas reales, así que nunca lo uses para publicar una web.

PHP en la terminal

Además de en el navegador, PHP se ejecuta desde la línea de comandos (CLI, Command Line Interface). Para eso, el comando php tiene que estar en el PATH, la lista de carpetas donde el sistema busca programas.

  • Windows con XAMPP: el ejecutable está en C:\xampp\php\php.exe. Añade C:\xampp\php al PATH (busca “variables de entorno” en el menú Inicio, edita Path y añade la ruta). Abre una terminal nueva después.
  • macOS: instala PHP con Homebrew: brew install php.
  • Linux: sudo apt install php-cli.

Comprueba que funciona:

php -v
PHP 8.4.21 (cli) (built: May  7 2026 18:44:14) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.4.21, Copyright (c) Zend Technologies

Los comandos que más usarás:

ComandoQué hace
php -vMuestra la versión instalada
php archivo.phpEjecuta un script y muestra su salida en la terminal
php -l archivo.phpComprueba la sintaxis sin ejecutar (lint)
php -S localhost:8000Arranca el servidor de desarrollo
php -aModo interactivo para probar instrucciones sueltas
php --iniIndica qué archivo php.ini está usando

Por ejemplo, este script calcula el precio de un bono de diez sesiones con descuento:

<?php
$precioSesion = 12;
$sesiones = 10;
$descuento = 0.15;

$total = $precioSesion * $sesiones * (1 - $descuento);
echo "Bono de $sesiones sesiones: $total euros\n";
// Bono de 10 sesiones: 102 euros

Guárdalo como bono.php y ejecútalo con php bono.php. Para practicar los fundamentos de las próximas lecciones, la terminal es lo más cómodo; para todo lo que tenga que ver con formularios o páginas, usarás el navegador.

Configurar VS Code para PHP

Puedes escribir PHP en cualquier editor, pero Visual Studio Code con un par de extensiones te ahorrará muchos errores (si aún no lo tienes, mira Editor y DevTools):

  1. PHP Intelephense (de Ben Mewburn): autocompletado de funciones, avisos de errores mientras escribes, saltar a la definición de una función y documentación al pasar el ratón. Es la imprescindible.
  2. PHP Debug (opcional, más adelante): conecta VS Code con Xdebug para ejecutar el código paso a paso.

Si VS Code no encuentra PHP para validar el código, indícale la ruta en la configuración (settings.json):

{
    "php.validate.executablePath": "C:\\xampp\\php\\php.exe"
}

Consejo: abre en VS Code la carpeta del proyecto completa (Archivo > Abrir carpeta), no los archivos sueltos. Así el autocompletado conoce todos tus archivos y la terminal integrada (Ctrl + ñ) se abre ya en la carpeta correcta.

Ver los errores mientras programas

Por defecto, muchas instalaciones de PHP ocultan los errores. Si algo falla, solo ves una página en blanco y no sabes por qué. En desarrollo quieres justo lo contrario: que PHP te diga qué ha fallado y en qué línea.

Hay dos directivas de configuración clave:

  • display_errors: si vale On, los errores se muestran en la página.
  • error_reporting: qué tipos de errores se informan. E_ALL significa “todos”.

La forma correcta es cambiarlas en el archivo de configuración php.ini. En XAMPP está en C:\xampp\php\php.ini (o desde el panel: Apache > Config > PHP (php.ini)). Busca estas líneas y déjalas así:

display_errors = On
error_reporting = E_ALL

Guarda y reinicia Apache (Stop y Start en el panel); los cambios en php.ini no se aplican hasta reiniciar.

Si no puedes tocar php.ini, puedes activarlo al principio de un script concreto:

<?php
ini_set('display_errors', '1');
error_reporting(E_ALL);

$ciudad = "Santander";
echo "Bienvenido a $cuidad\n";

Hay una errata: $cuidad en lugar de $ciudad. Gracias a la configuración, PHP te avisa:

Warning: Undefined variable $cuidad in C:\xampp\htdocs\curso-php\errores.php on line 6
Bienvenido a

El mensaje dice el tipo de error (Warning), la causa (variable no definida), el archivo y la línea. Acostúmbrate a leerlo entero: resuelve la mitad de los problemas.

Cuidado: en una web publicada, display_errors debe estar en Off. Los mensajes de error revelan rutas de tu servidor y detalles internos que pueden aprovechar los atacantes. En producción los errores se guardan en un archivo de registro (log_errors = On) en lugar de mostrarse.

phpinfo(): toda la configuración de un vistazo

La función phpinfo() genera una página enorme con toda la información de tu PHP: versión, ruta del php.ini que se está usando, extensiones instaladas, zona horaria, límites de subida de archivos…

<?php
phpinfo();

Guárdalo como info.php en tu carpeta del proyecto y ábrelo en http://localhost/curso-php/info.php. Es muy útil para resolver dudas como “¿qué php.ini está cargando Apache?” (fila Loaded Configuration File) o “¿tengo la extensión intl?”. Desde la terminal tienes lo mismo en texto con php -i.

Cuidado: nunca dejes un archivo con phpinfo() en una web pública. Da a cualquiera un mapa detallado de tu servidor. Úsalo en local y bórralo.

Subir tu web a un hosting compartido

Cuando tu proyecto funcione en local, puedes publicarlo en un hosting compartido: un servidor que comparten muchas webs y que ya tiene Apache, PHP y MySQL instalados. Es la opción más barata y la habitual para webs pequeñas. Los pasos generales son:

  1. En el panel del hosting (cPanel, Plesk o el suyo propio), elige la versión de PHP: la 8.x más reciente que ofrezca.
  2. Sube los archivos a la carpeta pública, que suele llamarse public_html, httpdocs o www. Hazlo con el administrador de archivos del panel o con un programa de SFTP como FileZilla (los datos de conexión te los da el hosting).
  3. Si usas base de datos, créala desde el panel y pon esos datos de conexión en tu archivo de configuración.
  4. Comprueba que display_errors está desactivado y que no has subido archivos de pruebas como info.php.

Tu index.php de public_html se verá en https://tudominio.com/. Tienes más detalles sobre dominios y publicación en Publicar tu web.

Errores frecuentes

  • Abrir el archivo con doble clic o arrastrándolo al navegador: la dirección empieza por file:/// y el PHP no se ejecuta. Usa siempre http://localhost/....
  • Guardar el archivo fuera de htdocs: Apache no lo encuentra y da error 404. Comprueba la ruta.
  • Olvidar arrancar Apache en el panel de XAMPP: el navegador dice que no puede conectar con localhost.
  • Cambiar php.ini y no reiniciar Apache: la configuración nueva no se aplica hasta reiniciar.
  • Editar un php.ini que no es el que se usa: puede haber varios. Mira cuál está cargado con phpinfo() o php --ini.
  • Ver una página en blanco y no saber por qué: casi siempre es un error con display_errors desactivado. Actívalo en desarrollo.
  • “php no se reconoce como un comando” en Windows: la carpeta de PHP no está en el PATH, o no has abierto una terminal nueva tras añadirla.

Resumen

ConceptoLo esencial
Servidor localApache + PHP (+ MySQL) en tu ordenador
XAMPPPaquete con todo; arranca Apache desde el panel
htdocsCarpeta raíz: htdocs/x/a.php se abre en http://localhost/x/a.php
localhostTu propio ordenador (127.0.0.1)
AlternativasLaragon, MAMP, paquetes de Linux, Docker
Servidor integradophp -S localhost:8000 desde la carpeta del proyecto
Terminalphp archivo.php, php -v, php -l
VS CodeExtensión PHP Intelephense
Errores en desarrollodisplay_errors = On y error_reporting = E_ALL en php.ini
phpinfo()Muestra la configuración; bórralo después
HostingSube los archivos a public_html y elige PHP 8.x

Con el entorno listo, en la siguiente lección aprenderás la sintaxis básica y echo.

Pon a prueba lo que has aprendido

[PHP] ¿Qué hace el comando php -S localhost:8000 ejecutado en la carpeta de tu proyecto?

[PHP] Con XAMPP, ¿qué dirección abre el archivo C:\xampp\htdocs\tienda\index.php?

[PHP] Apache no arranca en XAMPP y el panel avisa de que el puerto 80 está ocupado. ¿Qué puedes hacer?

[PHP] ¿Qué valor de display_errors es el adecuado en una web publicada y por qué?

¿Te ha quedado claro? Márcala y verás tu progreso en el explorador.