Instalar PHP y montar un servidor local
En esta lección
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.
- Descárgalo desde apachefriends.org. Elige la versión con el PHP 8 más reciente.
- Instálalo en la ruta que propone,
C:\xampp. EvitaC:\Archivos de programa, porque los permisos de Windows dan problemas. - Abre el XAMPP Control Panel y pulsa Start en la fila de Apache. Si se pone en verde, el servidor está funcionando.
- 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 enhttp://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 disco | Dirección en el navegador |
|---|---|
C:\xampp\htdocs\index.php | http://localhost/ |
C:\xampp\htdocs\pruebas\hola.php | http://localhost/pruebas/hola.php |
C:\xampp\htdocs\tienda\index.php | http://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
| Herramienta | Sistema | Por qué elegirla |
|---|---|---|
| XAMPP | Windows, macOS, Linux | La más extendida; es la que suelen usar en clase |
| Laragon | Windows | Ligera y rápida; crea direcciones bonitas como http://tienda.test y cambia de versión de PHP con un clic |
| MAMP | macOS (y Windows) | Equivalente a XAMPP con interfaz pensada para Mac |
| Paquetes del sistema | Linux | sudo apt install apache2 php libapache2-mod-php php-mysql en Ubuntu o Debian |
| Docker | Todos | Contenedores 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ñadeC:\xampp\phpal 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:
| Comando | Qué hace |
|---|---|
php -v | Muestra la versión instalada |
php archivo.php | Ejecuta un script y muestra su salida en la terminal |
php -l archivo.php | Comprueba la sintaxis sin ejecutar (lint) |
php -S localhost:8000 | Arranca el servidor de desarrollo |
php -a | Modo interactivo para probar instrucciones sueltas |
php --ini | Indica 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):
- 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.
- 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 valeOn, los errores se muestran en la página.error_reporting: qué tipos de errores se informan.E_ALLsignifica “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_errorsdebe estar enOff. 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:
- 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.
- Sube los archivos a la carpeta pública, que suele llamarse
public_html,httpdocsowww. 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). - Si usas base de datos, créala desde el panel y pon esos datos de conexión en tu archivo de configuración.
- Comprueba que
display_errorsestá desactivado y que no has subido archivos de pruebas comoinfo.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 siemprehttp://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.iniy no reiniciar Apache: la configuración nueva no se aplica hasta reiniciar. - Editar un
php.inique no es el que se usa: puede haber varios. Mira cuál está cargado conphpinfo()ophp --ini. - Ver una página en blanco y no saber por qué: casi siempre es un error con
display_errorsdesactivado. 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
| Concepto | Lo esencial |
|---|---|
| Servidor local | Apache + PHP (+ MySQL) en tu ordenador |
| XAMPP | Paquete con todo; arranca Apache desde el panel |
htdocs | Carpeta raíz: htdocs/x/a.php se abre en http://localhost/x/a.php |
localhost | Tu propio ordenador (127.0.0.1) |
| Alternativas | Laragon, MAMP, paquetes de Linux, Docker |
| Servidor integrado | php -S localhost:8000 desde la carpeta del proyecto |
| Terminal | php archivo.php, php -v, php -l |
| VS Code | Extensión PHP Intelephense |
| Errores en desarrollo | display_errors = On y error_reporting = E_ALL en php.ini |
phpinfo() | Muestra la configuración; bórralo después |
| Hosting | Sube 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
¿Te ha quedado claro? Márcala y verás tu progreso en el explorador.